如何调试“glibc 检测到 *** python: malloc(): 内存损坏”

4 投票
1 回答
6049 浏览
提问于 2025-04-16 03:40

我在用python2.5和scipy.weave来嵌入C语言代码。

在我的C代码里,没有使用malloc()这个函数,但我时不时会收到这样的错误:

"glibc detected *** python: malloc(): memory corruption"

(这是一个随机算法)

那我该怎么调试这个问题呢?

谢谢

1 个回答

7

我猜你的代码可能在某个地方超出了数组的范围(或者让Python出现了这种情况)。

如果你不能稳定地重现这个问题,调试起来会很困难,所以你可以尝试给你的随机数生成器设置一个固定的种子,这样就能找到一个能重现错误的种子。你还可以试试使用像 valgrind 这样的工具,它可以帮助你追踪什么时候写入了超出分配范围的内容——尤其是当你每次都能重现这个问题时,这个工具会更有用。

撰写回答