Страницы

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

вторник, 17 марта 2020 г.

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

#terminal #cpp #sublime_text


Работаю в 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!


Что за особенность работы терминала такая?
    


Ответы

Ответ 1



Это не особенность терминала, а свойство всех буферизированных потоков вывода. Пока не будет вызван метод flush(), или в поток не попадёт \n - данные из буфера не будут переданы на устройство.

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

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