使用STL编写内存泄漏安全代码应该避免什么?

时间:2011-02-18 16:57:56

标签: c++ stl memory-leaks

我现在已经使用STL很长一段时间了,但主要是为了实现算法,除了其他代码中的偶然向量。

在我开始使用它之前,我想知道人们在使用STL时常犯的错误 - 特别是,在使用STL模板保护我的代码免受内存泄漏时,我应该注意哪些事项?

3 个答案:

答案 0 :(得分:13)

有效使用STL存在很多瓶颈,如果你想了解更多,我会推荐这本书"Effective STL" by S.Meyers

答案 1 :(得分:9)

当您将原始指针存储到容器中的动态分配对象时,容器将无法管理其内存。

vector<FooBar*> vec;
vec.push_back(new FooBar); //your responsibility to free them

为了使更多的内存泄漏证明使用智能指针容器或专用指针容器,如Boost:pointer containers

特别是考虑到如果抛出异常,执行可能无法达到手动清理代码(除非付出痛苦的努力)。

答案 2 :(得分:6)

  

特别是,在使用STL模板保护我的代码免受内存泄漏的影响时,我应该注意哪些事项?

STL与否,答案是一样的: