c - 在 C 中释放一个结构数组

标签 c pointers

我在发这篇文章之前找过类似的东西,但找不到..

我有:

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/

相关文章:

c - C中的一个小困惑

c - 链表无限循环问题

c++ - 静态指针 C++ 用法

c - 设置指针值,之后不更改

c - 自由二维数组

c - 在 C 中打印链表

c - 从多个管道读取数据

c - 搜索、const char 数组和指针运算

pointers - Ifort : move_alloc() on attribute of a Pointer, intent(in) 触发错误

c - C 中的学习指针