C语言小问题 段错误是什么?

int getInfo()
{
FILE *fr = fopen("./file/InputFile.dat","r");
// if ( fr == NULL)
// return 0;
char ch;
while(!feof(fr)) {
ch = fgetc(fr);
printf("%c",ch);
}
printf("outoutout");
return 0;
}
Gcc无错,a.out的时候显示 段错误 (core dumped) InputFile.dat 不到6M
后来发现时 文件的路径错了..那我也想知道 为什么提示 是段错误呢?段错误什么意思?什么情况下会出现这种问题

1. 段错误一般是当你访问了未申请的内存或非法的内存时产生的。主要还是程序的内存管理有问题。
2. 其实打开文件是将文件指针读到一个内存中,来进行操作。lz的这种情况,文件路径有问题,就会使程序中内存的读入产生问题,产生断错误。
3. 建议lz上网搜索关键字“C++内存管理”,再进一步深入这个问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-11

程序运行在内存中;

系统在程序运行之前会在内存中先给程序画出一个空间

这个空间有些来存放代码的;有些来存放运行时的变量,还有些....

这个空间有一个区间使用来存放运行时的变量什么的

段错误 就是 程序运行时,变量访问越界一类的问题...

可能出现的原因是:

    数组下标越界

    动态分配内存的指针被double free了(释放两次了)

第2个回答  2018-06-26
%d表示只读取数字,你按q回车之后,缓冲区的q没有被scanf读走,而被scanf一直检测,并跳过,所以就成了死循环本回答被网友采纳
第3个回答  2012-06-20
fr应该是0x00,当你访问0x00时必定会出现段错误。因为访问不到0x00对应的文件描述符。
第4个回答  2011-07-29
指访问了不可访问的内存
相似回答