我收到运行时错误
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
在哪里?
答案 0 :(得分:3)
你有复制构造函数来复制已分配的内存吗?如果没有复制构造函数或者它没有复制已分配的内存,则两个对象的析构函数会尝试释放相同的内存位置。
答案 1 :(得分:2)
这告诉我在析构函数
~Clustering
和~NodeMap
中出现问题(第一个是空存根,第二个调用delete[]
),但不是“指针”被释放“是。
仅仅因为~Clustering
是“空的存根”并不意味着它不会做任何事情。在执行析构函数体之后,析构函数为每个直接非变量非静态数据成员调用析构函数。显然,您的班级Clustering
包含NodeMap<long,long>
类型的数据成员。
我怎样才能找到这个?
您的班级NodeMap<long,long>
包含多少个已分配的数组?如果它只有一个,就是那个。如果有多个,请在~NodeMap
中设置断点,以便逐步执行。