struct Node
{
int data;
Node *left;
Node *right;
};
void allocate(const int data, Node *&n)
{
;
// How do we allocate memory here?
//n = new Node(data, nullptr, nullptr);
}
void remove(Node *&n) { delete n; }
int main()
{
Node *n;
allocate(1, n);
remove(n);
}
n
中为allocate
分配内存的正确方法是什么?我不确定如何正确初始化结构。
答案 0 :(得分:3)
您可以通过以下方式执行此操作:
n = new Node {data, nullptr, nullptr};
完整代码:
struct Node
{
int data;
Node *left;
Node *right;
};
void allocate(const int data, Node *&n)
{
;
// How do we allocate memory here?
n = new Node{data, nullptr, nullptr};
}
void remove(Node *&n) { delete n; }
int main()
{
Node *n;
allocate(1, n);
remove(n);
}
建议:
1)在C ++中,结构可以也具有构造函数。因此,您必须定义构造函数,而不是为此使用单独的函数。
2)切勿使用裸露的new
。您必须考虑像unique_ptr
和shared_ptr