首页 > 解决方案 > C++ 指针不为空但不能被释放

问题描述

我正在实现一个开放的哈希表。我的问题出现在析构函数中,我遍历数组中的所有存储桶,对于每个数组,我将删除链表中的所有节点。


        // 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删除操作。这里出了什么问题?

标签: c++pointerssigabrt

解决方案


错误很明显。您尝试了delete一个未返回的值new

我们不知道该值是否是未分配值的地址,只是未初始化(垃圾),或者您是否损坏了堆。您还没有提供信息来确定这一点。

但是你确实知道你试图释放的值是不正确的,你需要弄清楚它是从哪里来的。


推荐阅读