【发布时间】:2011-10-02 01:25:38
【问题描述】:
考虑以下示例:
#include <vector>
class Foo {
std::vector<int*> v;
public:
Foo() {
this->v.push_back(new int(23));
this->v.push_back(new int(24));
this->v.push_back(new int(25));
}
~Foo() {
}
};
int main() {
Foo f;
return 0;
}
当 f 超出 main() 的范围时,会调用 f 的析构函数,这应该间接释放 f.v。根据this,现在应该调用向量 v 的每个元素的析构函数。
但是,当我在 valgrind 中运行这个程序时,我发现 int* 没有被释放。
$ valgrind --leak-check=full ./a.out
我在这里错过了什么?
【问题讨论】:
标签: c++ memory-leaks vector