我发现了一个因调用g_slice_alloc0(160)而导致的段错误;我可以调用g_slice_alloc0(320),g_slice_alloc0(128)或除160以外的任何值而不用gdb捕获段错误。
我甚至启用了G_SLICE = always-malloc或G_SLICE = debug-blocks,但程序行为不会改变。
为了确保问题不是双重释放,我甚至忽略了释放内存以进行测试。
(相关链接:https://mail.gnome.org/archives/gtk-devel-list/2010-December/msg00065.html)
答案 0 :(得分:0)
same answer as from the mailing list thread适用于此处:
切片分配器可能存在错误,但可能性更大 这些崩溃的原因是内存损坏和双重释放 受影响的代码每个bug应该被视为单独的bug,直到 根引起的。
如果没有看到您的代码,就无法找到其中的错误。您是否在valgrind下运行代码以搜索其他内存损坏问题?