Иногда мы помещаем отладочные отпечатки в наш код таким образом
printf("successfully reached at debug-point 1\n");
some code is here
printf("successfully reached at debug-point 2");
Here segmantaion fault occur due to some reason
Теперь в этом состоянии только debug-point1 будет печататься на stdio. Debug-point 2 print был записан в буфер stdio, но не очищен, поскольку не получил \n
, поэтому мы считаем, что сбой произошел после debug-point1
, чтобы перебраться из этого, если я отключу буферизацию с потоком stdio и stderr следующим образом
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
тогда безопасно ли это делать?
почему весь поток по умолчанию буферизуется в строке?
Редактировать:
Каков размер выделенного по умолчанию буфера для любого файлового потока? Я думаю, что его ОС зависела. я хотел бы знать о Linux?