3
我很久没有使用C了,而且我对它还是有点新鲜。我很困惑指针和引用的语法。基本上我有一个指针结构容器,我动态地分配为数组。当我完成它时,我想知道如何释放这些记忆。下面是它的样子:如何从结构中释放动态分配的内存?
typedef struct {
int* foo;
} Bar;
typedef Bar * BarRef;
BarRef newBar(int n) {
BarRef B = malloc(sizeof(Bar));
B->foo = calloc(n,sizeof(int));
}
/* This is what I am having trouble understanding */
void freeBar(BarRef *B) {
free(B->foo);
B->foo = NULL;
free(B);
*B = NULL;
}
我得到一个编译器错误告诉我,我正在请求一个不是结构体的成员。但我认为传递一个Ref*
会消失,所以这将像传递结构。我使用gcc和ANSI C.