Страницы

Поиск по вопросам

четверг, 6 июня 2019 г.

В терминале не выводится строка перед длительной операцией

Работаю в 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(), или в поток не попадёт
- данные из буфера не будут переданы на устройство.

Комментариев нет:

Отправить комментарий