Буферы не бесконечны, а в случае не файловых потоков, вероятно, даже не настолько велики.
То, что вы не написали std::flush
, не означает, что определенно не будет немедленным ответом потока. Если буфер заполнен, он все еще будет очищаться. Просто вы не выполняете ранний флеш.
Кроме того, вы можете предположительно увидеть std::cout
, ведущий себя как std::cerr
(который в основном отключает буферизацию) в режимах отладки. Я не знаю, делает ли это какая-либо реализация.
Мораль истории:
- если вам нужен вывод немедленно, сбросьте;
- если вам нужно позже, напишите позже;
- если и только если вам все равно, делайте так, как вы это сделали.