【发布时间】:2012-11-13 11:36:37
【问题描述】:
我遇到了一个简单的问题:我的程序在释放一些使用 calloc() 分配的内存时出现了段错误。回溯中的最后一个函数是 _IO_str_pbackfail。目前我使用的是 icc 版本 12.1.6。根据堆栈溢出的其他问题,这通常是由堆损坏引起的。通过查看 calloc 源,该函数似乎在分配空间的前 16 个字节中写入了一些数据。我试图在这些字节上添加一个观察点,但调试器没有检测到任何恶意写入。有关如何追踪此问题的任何想法?
【问题讨论】:
-
使用 GDB 和回溯 (bt)。但是,如果您需要更多帮助,则必须发布您的代码。
-
请发布出现段错误的代码的最小版本。
-
闻起来像一个别名/陈旧的指针。
-
您要么在进行乘法释放,要么在某些时候覆盖了一些簿记数据。无论哪种方式,你都有一个严重的问题。
标签: c segmentation-fault heap-memory free corruption