我在发这篇帖子之前找过这样的东西,但是找不到。。
我有:
struct foo* fooArray= malloc(sizeof(*fooArray)*5);
struct foo* newFoo = malloc(sizeof(*newFoo));
fooArray[0]=*newFoo;
struct foo* newFoo2 = malloc(sizeof(*newFoo2));
fooArray[1]=*newFoo2;
如何释放fooArray中的每个元素?
free(&fooArray[0]); // Gives me error
free(fooArray[0]); // Doesn't compile
最佳答案
首先是这个代码
struct foo* fooArray= malloc(sizeof(*fooArray)*5);
struct foo* newFoo = malloc(sizeof(*newFoo));
fooArray[0]=*newFoo;
struct foo* newFoo2 = malloc(sizeof(*newFoo2));
fooArray[1]=*newFoo2;
无效。
我想你的意思是
struct foo** fooArray= malloc(sizeof(*fooArray)*5);
struct foo* newFoo = malloc(sizeof(newFoo));
fooArray[0]=newFoo;
struct foo* newFoo2 = malloc(sizeof(newFoo2));
fooArray[1]=newFoo2;
要仅释放这两个已分配的元素newFoo和new Foo2,可以编写以下示例
free( fooArray[0] );
free( fooArray[1] );
fooArray[0] = NULL;
fooArray[1] = NULL;
如果还想释放整个数组,则可以编写
free( fooArray[0] );
free( fooArray[1] );
free( fooArray );
关于c - 在C中释放结构体数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30085465/