C++ 获取错误:";未分配要释放的指针";在我的解构中尝试删除指针时
这就是所讨论的解构。“下一步”是Tile*类型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() {
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有一个,你知道。事实上,如果“大小”不同步,最有可能的结果似乎是析构函数中的无限循环。谢谢,这可能是问题所在。这不是问题所在,但析构函数体只需要四行中的一行。