我收到运行时错误
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/