class A {
public:
void foo()
{
char *buf = new char[10];
vec.push_back(buf);
}
private:
vector<char *> vec;
};
int main()
{
A a;
a.foo();
a.foo();
}
在class A
中,foo()
分配了一些内存,指针被保存到vec
。当main()
结束时,a
会解构,a.vec
也会解构,但是分配的内存会被释放吗?
最佳答案
内存不会被释放。要发布它,您需要将它放在 unique_ptr 或 shared_ptr 中。
class A {
public:
void foo()
{
unique_ptr<char[]> buf(new char[10]);
vec.push_back(buf);
}
private:
vector<unique_ptr<char[]>> vec;
};
关于c++ - 将指针放入 std::vector & 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681279/