c++ - 将指针 push_back 指向 vector 的正确方法

标签 c++ pointers memory-leaks

由于类的构造函数使用指针 vector ,我有一个错误:LeakSanitizer:检测到内存泄漏

这里我只是我的代码。


问题.h

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

 public:
    // Constructor
    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
}

因为我的代码仍然有效。但正如我提到的,我得到了 ERROR: LeakSanitizer: detected memory leaks

我想我在 push_back 上做错了,我想问一下正确的方法。
问题是我想问一些通用的方法来解决这个问题。喜欢
我如何使用 原始指针 改进此代码。

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

谢谢!

最佳答案

不要想太多。

似乎你的对象中的所有东西都分配在那里,所以使用智能指针:

std::vector<std::unique_ptr<Object>> pointer_vector;

关于c++ - 将指针 push_back 指向 vector 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53469378/

相关文章:

c++ - 暂停和恢复由 Qt 中的 QProcess 启动的子进程

c++ - 全局和局部变量

c++ - 无法删除和删除 vector 上的对象指针

函数返回值后可以使用free()吗?

c++ - Macdeployqt 不工作

c++ - Mat 中的 Opencv push_back 函数

c++ - 有没有办法检查指针是否悬空?

c - C语言中的自由字符指针

c++ - 框架导致 macOS 内存泄漏

c++ - 使用 valgrind 修复内存泄漏