说,我有以下两个结构定义在C分配结构指针分配/释放动态数组用C
struct child {
int x;
};
struct Yoyo {
struct child **Kids;
};
我将如何去分配为孩子们的记忆。
说例如我有一些函数Yoyo_create()。
static struct Yoyo * yoyo_create() {
int n = 32000;
struct Yoyo *y;
y = malloc(sizeof(*Yoyo));
y->Kids = malloc(n*sizeof(*Child));
for (i = 0 ; i < n ; i ++) { y->Kids[i] = NULL; }
}
然后摧毁孩子在一些“析构函数”我会这样做。
void yoyo_destroy(struct yoyo *y)
{
free(y->Kids);
free(y);
}
这有道理吗?
'sizeof'需要一个类型名称或所需类型的表达式。你的'malloc(sizeof(* Yoyo))'应该可能是'mallof(sizeof(struct Yoyo))'或'malloc(sizeof(* y))','sizeof(* Child)'应该是'sizeof struct child)'... – Dmitri
@Dmitri'sizeof(struct Child *)' – BLUEPIXY