gpt4 book ai didi

c - 在结构内部重新分配动态数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:49 25 4
gpt4 key购买 nike

我有一个结构:

  struct Node{      

struct Node* pointer[0];
int num;
} *current=NULL;

然后在函数中我尝试创建子节点

void AddChild(struct Node *node) {
uint8_t n=2; // number of add children
for(uint8_t i=n; i-->0;){
struct Node* leaf=(struct Node*)malloc(sizeof(struct Node)); //allocate memory to child
struct Node* tmp=(struct Node*)realloc(node->pointer,(++node->num)*sizeof(struct Node*)); //reallocate memory for dynamic array mistake
if (!tmp)
printf("Error in memory alocation\n");
node->pointer[node->num]=leaf;
}
}

问题是 realloc 给我错误。

realloc(): invalid pointer:

因此,如果它是 c++,我可以创建一个 vector ,然后将元素推回,但对于 c,我需要重新分配指针数组。我怎样才能重新分配内存?

最佳答案

我知道这看起来像是 realloc 的问题,但您的问题是在 struct 中间使用了一个大小为零的数组。参见 here gcc 中零长度数组的解释,在 C99 中也称为灵活数组成员,特别是:

Flexible array members may only appear as the last member of a struct that is otherwise non-empty.

关于c - 在结构内部重新分配动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com