繁体   English   中英

在C中分配/释放动态的struct指针数组

[英]Allocate/Deallocate dynamic array of struct pointers in 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);
}

那有意义吗?

你不需要这些线

y->Kids = malloc(n*sizeof(*Child)); and <br>
free(y->Kids); 

因为你的y包含了孩子们的结构。 除了这些,你进展顺利

y = malloc(sizeof(struct Yoyo));

y-> Kids = malloc(n * sizeof(struct Child));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM