将内存分配给结构

时间:2019-02-13 01:39:11

标签: c++

示例

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分配内存的正确方法是什么?我不确定如何正确初始化结构。

1 个答案:

答案 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_ptrshared_ptr

这样的智能指针