自己偶尔写一段代码,本来就是新手,能实现个冒泡排序就高兴得不行了,好不容编译通过了,运行的时候出现了“核心已转储”。以前也没有仔细的去查过这个问题。从现在开始凡是出现过这个问题的代码我都贴上来,然后再修改。
其实“核心已转储”就是“段错误”:当时在用Qt的时候也遇到过段错误这类的错误,当时解决了后得出的原因是:定义了空指针。
CSDN里面有很多厉害的前辈,百度的时候也发现了很多人遇到过类似的问题,把前辈们给出的各种答案大致上总结一下,已备大家以后排错的时候用:
1)访问系统数据区,尤其是往 系统保护的内存地址写数据 最常见就是给一个指针以0地址
2)内存越界(数组越界,变量类型不一致等
3) 访问到不属于你的内存区域
(上述3条也是来自与CSDN某网友的总结)
在来看看 智慧的网友们是怎么回答:
1:core dump ,通常是因为segment fault,一般是访问越界引起的。
(某网友说的是:段错误,符合第二条,访问越界引起的。还是没懂访问越界是嘛意思?)
2:回复1:内存申请过大,或者越访问都会出现这样的问题。这个翻译是不是更应该翻译为:内存泄露更好一点?
(智慧的网友又提出来了内存泄露这样深奥的问题,对于我这个初学者来说,不是很明白,那一会百度,了解下内存泄露吧)
3:段错误 一般是非法访问内存造成的。
(这个好理解,大体上懂一点,不就是非法反问嘛,你真懂?好像是那么回事)
4:程序 出问题了,crash了,这些coredump文件保持了一些信息,供以后分析
(我也知道程序出问题了,没问题会这样么?不过对小白来说,任何一个专业名词都是有用的知识。什么事coredump?)
5:通常是指针、内存等错误,错误会存储到coredump文件,用gdb等工具可对coredump文件分析,定位错误发生的位置。
(貌似回到了coredump是什么了,就是保存错位的文件,类似于你犯错了,为什么犯错?给记录下来。大神还提到内存、指针错位。)
本文深入探讨了'核心已转储'错误的根本原因,并提供了包括访问越界、内存越界、访问不属于自己的内存区域在内的多种解决策略。同时,解释了coredump文件的作用以及如何利用gdb等工具进行错误分析。

2302

被折叠的 条评论
为什么被折叠?



