C ++指针不为空但无法释放
C++ pointer not null but cannot be freed
我正在实现一个开放的哈希表。我的麻烦出现在析构函数中,我在其中遍历数组中的所有存储桶,对于每个数组,我将删除链表中的所有节点。
// 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
未返回的值。
我们不知道该值是否是未分配值的地址,只是未初始化(垃圾),或者您是否已损坏堆。您没有提供信息来确定这一点。
但是您确实知道您尝试释放的值是不正确的,您需要弄清楚它的来源。
我正在实现一个开放的哈希表。我的麻烦出现在析构函数中,我在其中遍历数组中的所有存储桶,对于每个数组,我将删除链表中的所有节点。
// 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
未返回的值。
我们不知道该值是否是未分配值的地址,只是未初始化(垃圾),或者您是否已损坏堆。您没有提供信息来确定这一点。
但是您确实知道您尝试释放的值是不正确的,您需要弄清楚它的来源。