【问题标题】:Deleting Dynamic Struct in C++在 C++ 中删除动态结构
【发布时间】:2018-04-09 23:58:24
【问题描述】:

我有一个名为 Linked number 的结构

struct LinkedNum{
    int num;
    LinkedNum * next;
}

然后我使用 new 运算符为这个结构分配动态内存。

LinkedNum * first;
first = new LinkedNum;
first->num = 10;
first->next = nullptr;

LinkedNum * base;
base = first;
base->next = new LinkedNum;
base = base->next;

base->num = 20;
base->next = nullptr;

现在我将如何释放这个结构使用的所有内存。有两个结构 1 有 num = 10,其他有 num = 20。 我想删除所有结构,这样就不会有内存泄漏和悬空指针。

提前谢谢...

【问题讨论】:

  • 使用std::unique_ptr<LinkedNum> next;,不用再担心了。
  • 使用标准containers
  • 把你在纸上的链表画出来,想一想。想想first 指向的地方。
  • 不要像在 C 中那样编程。使用 C++ 特性,如构造函数和析构函数。

标签: c++ pointers struct dynamic-memory-allocation


【解决方案1】:

好的,首先你要开始从你的链接或结构的头部删除内存。您需要创建一个循环,以便它适用于多个结构。
如:

while( first != nullptr){
     LinkedNum* curr = first;
     first = first -> next;
     delete curr;
}

此代码生成一个临时值,其中第一个被存储,它沿着链接逐个删除每个元素并更新值。
希望这对您有所帮助!

【讨论】:

  • while (curr != nullptr) => while (first != nullptr)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 2018-06-10
  • 2011-03-01
  • 1970-01-01
  • 2015-03-08
相关资源
最近更新 更多