我的程序突然崩溃,并在核心文件中引发这个错误。
确切地说:
Program terminated with signal 6, Aborted. #0 0x00c60410 in __kernel_vsyscall () #0 0x00c60410 in __kernel_vsyscall () #1 0x00444df0 in raise () from /lib/libc.so.6 #2 0x00446701 in abort () from /lib/libc.so.6 #3 0x0047d3ab in __libc_message () from /lib/libc.so.6 #4 0x004856c5 in _int_free () from /lib/libc.so.6 #5 0x00485b09 in free () from /lib/libc.so.6
这是相关的Linux或我在我的代码中犯了一个错误?
如何解决这个问题?
谢谢。
错误是free()
,这可能是你在程序中调用的一个函数,也是一个犯错误的地方。 你可能释放了一个无效的指针(可能通过双免费?)。 堆栈跟踪显示所有其他功能,因为这些被称为下free()
。 这在调用库函数不正确时很常见,所以通常只是留意你认识的东西。 作为一个经验法则,你会开始看着你认识到的堆栈跟踪中最远的东西(即在你的程序中),但是如果在堆栈或程序中有更多的内存损坏,不会帮助太多。
为了清楚起见编辑: “下了堆栈”的意思是“走向列表的顶部”,因为六个字母变量指出,你想找到你认识的最近的地方。 我意识到我最初的措词可能会令人困惑。