我在发这篇帖子之前找过这样的东西,但是找不到。。
我有:

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/

10-11 22:54
查看更多