出于学习目的,我已经创建了自己的双向链表实现。我正在做一些测试以确保内存被正确释放。在 main.cpp
中,我有以下内容:
list<int> pointer;
int *x = new int(1);
int *y = new int(2);
int *z = new int(3);
pointer.insertBack(*x);
pointer.insertBack(*y);
pointer.insertBack(*z);
pointer.printForward();
pointer.printReverse();
显然,由于调用 new
,正在分配内存。我是否必须在所有这些代码之后调用 delete 自己,或者列表的析构函数是否应该处理内存释放?如果我使用 int
而不是指针,则不会发现内存泄漏。我正在使用 valgrind 检查内存泄漏。
最佳答案
如果您在列表中存储指向数据的指针,您必须自己删除该数据,列表不会(或不应该)为您做这件事。
最好的方法是获取数据,使用它,然后在同一个函数中删除它。
另外,根据您对链表的实现,您可能必须在内部删除链表中每个节点正在使用的内存。
如果你说的是删除列表,如果你不需要数据,你应该在删除列表之前删除它。
关于c++ - 内存释放双向链表C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16680976/