【问题标题】:C++ Linked list - Deallocating node gives errorC++ 链表 - 释放节点给出错误
【发布时间】:2016-03-06 07:23:32
【问题描述】:

我创建了一个链接列表。插入和遍历工作正常。下面给出的是我正在释放节点的部分。我有三个指针now, nxt, start,它们的数据类型都是node (the structure)

now=start;
for(int i=0;i<n;i++){
    nxt=now->link;
    delete now->link;
    now=nxt;
}

start存储第一个节点的地址,now存储当前正在处理的节点的地址,nxt存储从地址@的节点的链接部分访问的下一个节点的地址987654327@.

当我尝试执行程序时,直到删除正常,当它到达删除时,程序崩溃并给出“标题:停止工作”错误。代码有什么问题?

【问题讨论】:

  • 你现在创建了吗->链接“新”声明?
  • 你确定链表有准确的n节点吗?
  • 是的,链表有n个节点

标签: c++ pointers linked-list delete-operator


【解决方案1】:

我想这就是问题所在:

delete now;
now=nxt;

您删除某些内容,然后对其执行分配。

【讨论】:

  • 删除now-&gt;link时也会发生同样的情况
  • 赋值是在指针上执行的,而不是被删除的对象。 while (now) { nxt = now-&gt;next; delete now; now = nxt; } 是迭代和删除链表的正确(和惯用)方式。问题中的新代码有问题,因为它继续使用已删除的对象。
猜你喜欢
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 2013-07-23
  • 2016-06-02
  • 2016-08-18
  • 2018-06-03
  • 2020-10-30
  • 1970-01-01
相关资源
最近更新 更多