我很久没有使用过C了,我还是有些新手.我对指针和引用的语法感到困惑.基本上我有一个带有指针的struct容器,我将其动态分配为数组.当我完成它时,我想知道如何释放内存.这是它的样子:
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;
}
Run Code Online (Sandbox Code Playgroud)
我收到一个编译器错误,告诉我我正在从一个不是结构的东西请求一个成员.但是我认为传递一个Ref*derefred所以它就像传递结构一样.我正在使用gcc和ANSI C.