gpt4 book ai didi

c++ - 将指针放入 std::vector & 内存泄漏

转载 作者:行者123 更新时间:2023-11-30 00:55:46 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com