首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >分割错误:它们是什么,以及如何避免它们的一般提示?

分割错误:它们是什么,以及如何避免它们的一般提示?
EN

Stack Overflow用户
提问于 2011-10-19 03:18:04
回答 1查看 115关注 0票数 0

我遇到的大多数来源都是这样定义分段错误的:当程序引用未定义的虚拟内存区域时,就会发生分段错误

但由于我还没有上过操作系统的课,我通常不知道这是什么意思,这是一个虚拟内存的“未定义区域”……

此外,我的许多C程序往往会遇到分段错误,不幸的是,我不知道如何修复它们。对于如何避免这些错误,以及在程序的所有逻辑看起来都正常的情况下遇到错误时该怎么办,有什么好的提示吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-19 03:29:52

更简单地说,分段错误是您正在读取或写入内存,而您不允许访问这些内存,因为您不拥有它。

一个简单的例子是在堆栈上使用一个变量,后跟一些代码。假设我们有

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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',并杀死它后面的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7816184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文