c++ Segmentation fault Warning

今天重新拾起c++ primer第五版复习了一下c++,看到第一章有一小处细节是之前没注意到的,特此补充。
“程序员常常在调试时添加打印语句。这类语句应该保证‘一直’刷新流。否则,如果程序崩溃,输出可能还留在缓冲区中,从而导致关于程序崩溃位置的错误推断“。
结合之前,我也经常使用过打印语句来调试代码,当出现段错误有时定位到程序错误位置,有时定位不到。才发现原来输出时是有一个与设备关联的缓冲区(buffer),每次输出的字符串遇到特殊值如换行(\n)等,才会将程序目前为止所产生的所有输出都真正写入输出流中,而不是仅停留在内存中等待写入流。
例子展示如下:

#include 
int main(){
   char *p=NULL;
   printf("aa");
   printf("%c\n",*p);
   return 0;
}

c++ Segmentation fault Warning_第1张图片

#include 
int main(){
   char *p=NULL;
   printf("aa\n");
   printf("%c\n",*p);
   return 0;
}

c++ Segmentation fault Warning_第2张图片

你可能感兴趣的:(c语言/c++学习)