删除C++中的动态结构

Deleting Dynamic Struct in C++

本文关键字:动态 结构 C++ 删除      更新时间:2023-10-16

我有一个名为链接数字的结构

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。我想删除所有结构,这样就不会有内存泄漏和悬空指针。

提前感谢...

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

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

此代码在存储第一个值的位置创建一个临时值,并沿着链接逐个删除每个元素并更新值。
希望对您有所帮助!