【发布时间】:2014-11-14 05:54:45
【问题描述】:
这是我对链表的声明:
// linked list of links
struct LinkedNode {
Linked data;
LinkedNode* next;
LinkedNode (const Linked& link); //ignore, not a concern at them moment
};
LinkedNode* firstLink;
LinkedNode* lastLink;
这是我的析构函数实现:
Portion::~Portion(){
while(firstLink != NULL){
LinkedNode *temp = firstLink;
firstLink = firstLink->next;
delete temp;
}
lastLink = NULL;
}
我不明白为什么会出现分段错误。我试图删除 lastLink 和 firstLink 然后单独删除。我也做了同样的事情,但也将它们设置为 NULL。我错过了什么吗?
【问题讨论】:
-
我看不出你发布的小代码有什么明显错误。
-
你能发布足够多的代码来演示这个问题吗(最好是一个完整的、独立的测试用例)?你发布的sn-p没有明显的问题,所以问题可能出在你没有发布的代码上。
-
尝试创建一个最小的例子,见stackoverflow.com/help/mcve。这样做可能已经告诉您问题出在哪里。
-
崩溃发生在析构函数中并不意味着析构函数本身有问题。实际上,它看起来不错。问题在别处。这可能有数百种不同的原因导致崩溃,但无法从您发布的内容中判断。对于初学者来说,告诉我们哪条线路崩溃是个好主意。
-
Linked 的析构函数中有什么?
标签: c++ linked-list destructor