小编Meg*_*man的帖子

使用唯一指针和多态性的内存泄漏

我知道这并std::unique_ptr不能保证内存安全,尤其是在循环依赖的情况下。然而,就我而言,我看不到它。Child包含Parent(或者SecondChild在多态性的情况下),但它们都不包含Child.

Valgrind 报告4 bytes丢失,所以我认为它SecondChild没有被破坏。我的代码确实依赖于多态性,因此我希望获得有关重构的建议,这些建议不会Parent*Child.

#include <iostream>
#include <memory>
using namespace std;

struct Parent
{
    Parent() {
        cout << "Expr created" << endl;
    }

    ~Parent() {
        cout << "Expr destroyed" << endl;
    }
};

struct Child : public Parent 
{
    std::unique_ptr<Parent> content;
};

struct SecondChild : public Parent 
{
    int val;
};

std::unique_ptr<Parent> foo()
{
    auto test = make_unique<Child>();
    auto content_in_child = make_unique<SecondChild>(); …
Run Code Online (Sandbox Code Playgroud)

c++ oop memory-leaks smart-pointers unique-ptr

6
推荐指数
1
解决办法
111
查看次数

标签 统计

c++ ×1

memory-leaks ×1

oop ×1

smart-pointers ×1

unique-ptr ×1