我在发这篇文章之前找过类似的东西,但找不到..
我有:
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/