C ++指针不为null,但无法释放

问题描述 投票:0回答:1

我正在实现一个开放的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。这里出了什么问题?

c++ pointers sigabrt
1个回答
2
投票

错误非常清楚。您试图delete一个未由new返回的值。

我们不知道该值是未分配值的地址,还是未初始化(垃圾),或者您是否破坏了堆。您尚未提供确定信息。

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

© www.soinside.com 2019 - 2024. All rights reserved.