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 未返回的值。

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

但是您确实知道您尝试释放的值是不正确的,您需要弄清楚它的来源。