我遇到的大多数来源都是这样定义分段错误的:当程序引用未定义的虚拟内存区域时,就会发生分段错误
但由于我还没有上过操作系统的课,我通常不知道这是什么意思,这是一个虚拟内存的“未定义区域”……
此外,我的许多C程序往往会遇到分段错误,不幸的是,我不知道如何修复它们。对于如何避免这些错误,以及在程序的所有逻辑看起来都正常的情况下遇到错误时该怎么办,有什么好的提示吗?
发布于 2011-10-19 03:29:52
更简单地说,分段错误是您正在读取或写入内存,而您不允许访问这些内存,因为您不拥有它。
一个简单的例子是在堆栈上使用一个变量,后跟一些代码。假设我们有
char a[4];
int i=0;
for(i=0; i<1000; ++0)
a[i]='a';
printf("Hi this line will never get printed because last line killed it\n");
所以在堆栈上,我们有4个字节分配给'a',另外4个字节分配给int 'i‘,现在我们有了作为函数的代码。问题是for语句将1000个字节写入'a‘,这会覆盖'i',并杀死它后面的代码。
https://stackoverflow.com/questions/7816184
复制相似问题