0

我收到运行时错误

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

4

2 回答 2

3

您是否有复制分配的内存的复制构造函数?如果没有复制构造函数,或者如果有但不复制分配的内存,那么两个对象的析构函数会尝试释放相同的内存位置。

于 2013-01-08T16:31:05.750 回答
2

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

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

我怎样才能找到这个?

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

于 2013-01-08T16:35:20.727 回答