核心文件中的_kernel_vsyscall()

won*_*nie 2 c linux coredump core

我的程序突然崩溃并在核心文件中引发此错误.

确切地说:

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
Run Code Online (Sandbox Code Playgroud)

这与linux有关还是我的代码出错了?

怎么解决这个?

谢谢.

Dan*_*ego 5

错误在于free(),这可能是您在程序中调用的函数,也是出错的常见位置.你可能释放了一个无效指针(可能是通过双重释放?).堆栈跟踪显示所有其他功能,因为这些功能在下面调用free().这在调用库函数时很常见,因此您通常只关注您识别的内容.根据经验,你会想要开始查看你认识到的堆栈跟踪中最远的东西(即在你的程序中),但是如果堆栈或程序中还有其他内存损坏,那么看看那里不会帮助太多.

编辑为清楚: "打倒栈"是指"向列表的顶部,"因为作为sixlettervariables所指出的,你要找到你最近的地方你认识.我意识到我最初的措辞可能令人困惑.