gpt4 book ai didi

c - GLIB 段错误 : No source available for "g_slice_alloc() "

转载 作者:行者123 更新时间:2023-12-04 12:06:58 24 4
gpt4 key购买 nike

这个段错误发生在我运行的时候:

alignarray *aligns = g_ptr_array_sized_new(N_DEFAULT_ALIGNS); 

...,其中 alignarray 就是 GPtrArray

这条语句成功运行了好几次,然后突然失败,报“No source available for g_slice_alloc()。经过搜索,我尝试使用export G_SLICE=always-malloc来禁用切片内存分配,但仍然失败...

还是因为我在代码的某处没有很好地处理内存?目前我的问题是我不知道在哪里调试。我尝试了 gdbvalgrind,但两者都无济于事。

最佳答案

很奇怪设置G_SLICE=always-malloc 还是出现这个问题。切片分配器是一种通过为大小相似的操作重用内存来避免分配内存开销的方法。

如果您分配 100 个 8 字节长的东西(比如 32 位上的 2 个指针),请释放它们并分配更多,然后您将重用相同的内存。重要的警告是,您必须确保使用切片分配器函数释放使用切片分配器分配的内存 - 直接通过 g_slice_free 或通过类似 g_object_unref 的方式间接检查你的代码表明你没有使用 g_free

释放 GPtrArray 的其他实例(或类似大小的东西)

您可以使用 valgrind 识别错误释放或损坏发生的位置。使用 valgrind 时,您必须设置G_SLICE=always-malloc

关于c - GLIB 段错误 : No source available for "g_slice_alloc() ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9278347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com