我对C ++中的内存解除分配感到困惑。我有一个结构
struct Node{
Node* left;
Node* right;
};
我将Node类型的指针声明为:
struct Node* myNode = new Node;
现在,如果我执行delete myNode
,它还会在left
内取消分配right
和myNode
指针吗?如果没有,如果我们在Node
类型中有很多指针并且在没有内存泄漏的情况下编写代码会非常困难,那会不会很乏味?
答案 0 :(得分:9)
不,它不会破坏或解除分配。但是,对于这种情况,您可以编写析构函数:
~Node()
{
delete left;
delete right;
}
更好的方法是使用智能指针,如std::shared_ptr
或std::unique_ptr