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

标签 c++ memory-leaks

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/

相关文章:

c++ - mmioOpen 出现奇怪的文件未找到错误

c++ - 如何在链表中使用查找

haskell - 为什么嵌套永远泄漏内存?

c - 如何在c开发过程中避免内存泄漏

Android RAM 使用量以及如何减少它?

c++ - C++中的引导加载程序

c++ - 是否有可能获得在 GCC 中编译的函数的名称?

c++ - 如果 Windows 工具提示在创建时与当前鼠标位置重叠,则阻止它们立即消失

c - 将指针传递给函数时避免内存泄漏

c - C 中的双重间接内存泄漏(可能)