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 に答える