我的头文件中有以下内容
typedef struct tree_node* TreeNode;
struct tree_node{
int value;
void *data;
TreeNode parent;
TreeNode left;
TreeNode right;
};
要创建一个treenode,我正在关注
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);
答案 0 :(得分:0)
node = malloc(sizeof(TreeNode*));
将只分配4个字节(或8个,具体取决于指针的大小)。这是错的。使用sizeof(struct tree_node);
或最终会导致细分违规。
除此之外,您的代码看起来还不错。是的,这就是你可以创建数组的方法。
查看VLA(可变长度数组)