Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取错误:";未分配要释放的指针";在我的解构中尝试删除指针时_C++_Xcode_Pointers - Fatal编程技术网

C++ 获取错误:";未分配要释放的指针";在我的解构中尝试删除指针时

C++ 获取错误:";未分配要释放的指针";在我的解构中尝试删除指针时,c++,xcode,pointers,C++,Xcode,Pointers,这就是所讨论的解构。“下一步”是Tile*类型 Tile::~Tile() { if (next != NULL) delete next; next = NULL; return; } 我整天都在处理我项目中的问题,但我还没有找到解决方案 以下是完整的项目: 以下是调用该析构函数的析构函数: Boneyard::~Boneyard() { Tile* current = front; while (size != 0) { current = fron

这就是所讨论的解构。“下一步”是Tile*类型

Tile::~Tile() {
if (next != NULL)
    delete next;
next = NULL;
return;
}
我整天都在处理我项目中的问题,但我还没有找到解决方案

以下是完整的项目:

以下是调用该析构函数的析构函数:

Boneyard::~Boneyard() {
    Tile* current = front;
    while (size != 0) {
        current = front;
        while (front != NULL) {
            if (current -> getNext() == NULL) {
                remove(current->getIndex());
            } else {
                current = current -> getNext();
            }
        }
    }
}
它正在调用的函数:

void List::remove(int x) {
    if (front == NULL) {
        return;
    } else if (front -> getIndex() == x) {
        Tile* temp = front;
        if (front -> getNext() != NULL)
            front = front -> getNext();
        else
            front = NULL;
        delete temp;
    } else {
        Tile* ptr = front;
        while (ptr -> getNext() != NULL) {
            if (ptr -> getNext() -> getIndex() == x) {
                Tile* temp = ptr -> getNext();
                ptr -> setNext(ptr -> getNext() -> getNext());
                delete temp;
                return;
            }
            ptr = ptr->getNext();
        }
    }
    size--;
    updateIndexes();
}

不太可能有人想要筛选您的整个代码,尤其是在其他网站上。您需要将整个代码缩短为很短的长度,编辑您的问题,并将您的作为问题本身的一部分包含在内。该删除列表有一个代码路径,其中
大小不递减,但您从列表中删除了一个节点。这在很大程度上破坏了
while(size!=0)
控制循环逻辑。希望您能够停止向编辑器抛出代码,直到看到这一点为止。在调试器中运行此命令。Xcode有一个,你知道。事实上,如果“大小”不同步,最有可能的结果似乎是析构函数中的无限循环。谢谢,这可能是问题所在。这不是问题所在,但析构函数体只需要四行中的一行。