0

我的头文件中有以下内容

typedef struct tree_node* TreeNode;

struct tree_node{

    int value;
    void *data;

    TreeNode parent;
    TreeNode left;
    TreeNode right;

};

要创建一个树节点,我正在执行以下操作

TreeNode createTreeNode(int value, void *data){

    TreeNode node;

    node = malloc(sizeof(TreeNode*));

    if(node == NULL){
        printf("TreeNode malloc failed!!\n");
        exit(EXIT_FAILURE);
    }


    node->data = data;
    node->value = value;
    node->parent = NULL;
    node->right = NULL;
    node->left = NULL;

    return node;

}

现在我想创建 TreeNodes 数组......我该怎么做?我在想以下

TreeNode *treeNodes;
treeNodes = malloc(26 * sizeof(TreeNode));

进而

treeNodes[a_number_between_0_to_25] = createTreeNode(intNodeValue, NULL);
4

1 回答 1

0

node = malloc(sizeof(TreeNode*));只会分配 4 个字节(或 8 个,具体取决于指针的大小)。这是错误的。使用sizeof(struct tree_node);,否则您将最终违反分段。

除此之外,您的代码看起来还可以。是的,这就是创建数组的方式。

也研究 VLA(可变长度数组)

于 2013-02-24T15:58:31.670 回答