push_back指向矢量的正确方法

Jig*_*gao 0 c++ pointers memory-leaks

我有一个ERROR: LeakSanitizer: detected memory leaks使用指针向量的类的构造函数.

我只是我的代码.


Problem.h

class Problem {
 protected:
    std::vector<const Object*> pointer_vector;

 public:
    // Constructor
    Problem();
};
Run Code Online (Sandbox Code Playgroud)

Problem.cc

Problem::Problem() {
    this->pointer_vector.push_back(new Object(parameter_list_1));
    this->pointer_vector.push_back(new Object(parameter_list_2));
    // here I just want to push back the pointer into the vector
}
Run Code Online (Sandbox Code Playgroud)

因为我的代码仍然有效.但是ERROR: LeakSanitizer: detected memory leaks正如我所提到的那样.

我想我做错了push_back,我问的是这样做的正确方法.
问题是我想问一些解决这个问题的一般方法.喜欢
如何使用raw pointer.改进此代码.

因为我认为我们肯定有很好的方法可以解决这个问题而且没有找到可能重复的方法.如果您需要详细的错误报告,我会添加它们.

谢谢!

Mat*_*her 6

不要过分思考这一点.

看来您对象中的所有内容都在那里分配,因此请使用智能指针:

std::vector<std::unique_ptr<Object>> pointer_vector;
Run Code Online (Sandbox Code Playgroud)