gpt4 book ai didi

c++ - 我的链表实现是否泄漏内存?

转载 作者:太空狗 更新时间:2023-10-29 20:36:55 25 4
gpt4 key购买 nike

代码:

struct LinkedList {
int someData;
LinkedList* next;

LinkedList() : next(0) {}
~LinkedList() {delete next;}
};

void someFunction() {
LinkedList list;

list.next = new LinkedList;
list.next->next = new LinkedList;
list.next->next->next = new LinkedList;
// And so on...
}

我说这段代码不会泄漏内存是否正确?当列出范围时,它应该调用它的析构函数,它调用 next 的析构函数,它调用 next 的析构函数,依此类推,直到调用 delete 0。

最佳答案

不,您的代码不会泄漏内存。当 list 超出范围时,它将被删除,链式 react 将删除每个下一个元素,直到最后一个。

但是,您的代码不遵守 rule of 3 .因此,只要您复制构造或复制分配一个 LinkedList,它的 next 指针就会被浅复制。被删除/销毁的两个拷贝中的第一个将删除它。另一个然后使用不再有效的指针工作,并且将很快或稍后将其删除,从而导致 UB。

关于c++ - 我的链表实现是否泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36799159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com