我收到运行时错误

malloc: *** error for object 0x10070c5c0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug


具有以下堆栈跟踪:



这告诉我,析构函数~Clustering~NodeMap中出了点问题(第一个是空存根,第二个是delete[]),但不是“释放指针”的地方。我如何找到这个?

另外,malloc_error_break在哪里?

最佳答案

这告诉我,析构函数~Clustering~NodeMap中出了点问题(第一个是空存根,第二个是delete[]),但不是“释放指针”的地方。


仅仅因为~Clustering是“一个空的存根”并不意味着它什么也没做。在执行了析构函数的主体之后,析构函数将为每个直接非变量非静态数据成员调用析构函数。显然,您的类Clustering包含类型为NodeMap<long,long>的数据成员。


  我如何找到这个?


您的类NodeMap<long,long>包含多少个分配的数组?如果只有一个,那就是那个。如果有多个中断,请在~NodeMap中设置一个断点,以便逐步执行。

关于c++ - 指针未被释放-如何调试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14219387/

10-10 03:36