Работаю в Ubuntu 14.04 x86, Sublime Text 2 + терминал
Странность высветилась во время вывода строки перед длительной операцией. Я использовал выделение большого кол-ва памяти:
MyType* type;
long int MyNumber = 3000000;
cout << "Initialization... ";
MyType* type = new MyType[MyNumber];
cout << "Done! << endl;
По всей логике вывод терминала должен быть следующим:
Initialization...*пауза* Done!
Но по какой-то причине пауза проходит вначале, а две строки выводятся одновременно.
*пауза* Initialization... Done!
После добавления к выводу первой строки команды endl первая надпись срабатывает так, как нужно.
Initialization...
*пауза*
Done!
Что за особенность работы терминала такая?
Ответ
Это не особенность терминала, а свойство всех буферизированных потоков вывода. Пока не будет вызван метод flush(), или в поток не попадёт
- данные из буфера не будут переданы на устройство.
Комментариев нет:
Отправить комментарий