【发布时间】:2015-12-12 06:42:19
【问题描述】:
使用list管理内存的好习惯有哪些,
当我们不再需要它时动态分配和释放(免费)。为了保持程序轻巧并避免内存泄漏,请确保良好的内存管理(我现在这是一个广泛的问题)
- 如何初始化一个指向最初包含 N 个项目的对象的指针列表?我应该使用 operator new 来分配内存吗?
- 如果我想从列表和程序存储空间中完全删除(释放)一个项目,我应该使用 pop 还是 remove 或 erase ?区别?
- 我应该在迭代列表时使用 operator delete 还是 .erase .remove 足以释放空间?
.
class myclass { /* whatever attributes, methodes */ };
list<myclass *> lst (5); //5 pointers will be NULL this way
for (list<myclass *>::iterator it=lst.begin(); it != lst.end(); it++) {
myclass *obj= *it;
delete obj; //error
it = lst.erase(it);
}
【问题讨论】:
-
使用smart pointers 并避免原始拥有指针。
-
我什至不知道智能指针是什么我不熟悉 c++
-
C++ 中的列表和相关容器旨在保存对象并为您处理所有内存管理。除非你有充分的理由,否则根本不要使用指针。
-
@Beta:这对于 list 来说可能是一个公平点,它是一个专门的容器。它当然不适用于
std::vector,它应该是您的默认容器。 -
@MSalters:为什么它不适用于
std::vector?将指针放在向量中如何使它们更易于理解?
标签: c++ pointers memory memory-management linked-list