1

出于学习目的,我创建了自己的双向链表实现。我正在做一些测试以确保正确释放内存。在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. 在所有这些代码之后我是否必须自己调用删除,或者列表的析构函数是否应该处理内存释放?如果我使用 anint而不是指针,则不会发现内存泄漏。我正在使用 valgrind 检查内存泄漏。

4

1 回答 1

2

如果您在列表中存储指向数据的指针,则必须自己删除该数据,列表不会(或不应该)为您执行此操作。
最好的方法是获取数据,使用它,然后在同一个函数中删除它。

此外,根据您对链表的实现,您可能必须在内部删除列表中每个节点正在使用的内存。

如果您正在谈论删除列表,如果您不需要数据,则应在删除列表之前将其删除。

于 2013-05-21T23:11:45.077 回答