C++ 是否删除和删除带有指向数据指针的节点?

C++ 是否删除和删除带有指向数据指针的节点?,c++,pointers,memory-management,nodes,C++,Pointers,Memory Management,Nodes,将删除指向结构的指针foo: struct foo { bar * baz; }; 指向structbaz: struct baz { int arr; }; 另外,delete/释放由baz指向的内存。否。删除不会以这种方式“级联” 但是,如果您有一个用于foo的析构函数,那么您可以在该析构函数中删除baz。否。您需要在删除foo实例之前手动删除baz。大多数典型的开发人员都会使用foo-delete-baz的析构函数 struct foo { bar * baz;

将删除指向结构的指针
foo

struct foo
{
    bar * baz;
};
指向struct
baz

struct baz
{
    int arr;
};
另外,
delete
/释放由
baz
指向的内存。

否。删除不会以这种方式“级联”


但是,如果您有一个用于
foo
的析构函数,那么您可以
在该析构函数中删除baz

否。您需要在删除foo实例之前手动删除baz。大多数典型的开发人员都会使用foo-delete-baz的析构函数

struct foo
{
    bar * baz;
    ~foo()
    {
        delete baz;
    }
};

除了析构函数之外,您还应该遵循三/五的规则,并实现复制/移动构造函数和赋值运算符。还没有太多关于复制构造函数的知识。这是针对DS类的,所以我们对语言本身没有太多的了解。如果是这样,那将是一场灾难。如果其他东西正在使用struct baz,该怎么办?!是的,这正是我的恐惧,或者更好,如果
baz
在构造函数中创建,并在析构函数中删除,它可能不应该单独分配。(或者,使用智能指针)K,谢谢。我有几个表指向相同的数据,所以我想确保解构一个表不会影响实际数据。