如何调试“glibc 检测到 *** python: malloc(): 内存损坏”
我在用python2.5和scipy.weave来嵌入C语言代码。
在我的C代码里,没有使用malloc()这个函数,但我时不时会收到这样的错误:
"glibc detected *** python: malloc(): memory corruption"
(这是一个随机算法)
那我该怎么调试这个问题呢?
谢谢
1 个回答
7
我猜你的代码可能在某个地方超出了数组的范围(或者让Python出现了这种情况)。
如果你不能稳定地重现这个问题,调试起来会很困难,所以你可以尝试给你的随机数生成器设置一个固定的种子,这样就能找到一个能重现错误的种子。你还可以试试使用像 valgrind 这样的工具,它可以帮助你追踪什么时候写入了超出分配范围的内容——尤其是当你每次都能重现这个问题时,这个工具会更有用。