代码之家  ›  专栏  ›  技术社区  ›  karafar

为结构分配内存

c++
  •  -2
  • karafar  · 技术社区  · 7 年前

    示例

    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 回复  |  直到 7 年前
        1
  •  3
  •   Kunal Puri    7 年前

    你可以这样做:

    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++中,Stutt>St>C>也有构造函数。因此,您必须定义构造函数,而不是为此使用单独的函数。

    2)禁止裸用 new . 你必须考虑像 unique_ptr shared_ptr