我正在实现一个开放的HashTable。我的麻烦出现在析构函数中,我在其中遍历数组中的所有存储桶,对于每个数组,我都将删除链表中的所有节点。
// Deallocate all buckets
for (int i=0; i<maxBuckets; i++) {
Cell * p = m_data[i];
while (p != nullptr) {
Cell * temp = p;
p = p->next;
delete temp;
}
}
delete [] m_data;
但是它报告有关删除操作的pointer being freed was not allocated
。这里出了什么问题?
错误非常清楚。您试图delete
一个未由new
返回的值。
我们不知道该值是未分配值的地址,还是未初始化(垃圾),或者您是否破坏了堆。您尚未提供确定信息。
但是您确实知道您试图释放的价值是不正确的,并且您需要弄清楚它的来源。