小编bnd*_*bnd的帖子

如何从结构中释放动态分配的内存?

我很久没有使用过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.

c pointers

3
推荐指数
1
解决办法
377
查看次数

标签 统计

c ×1

pointers ×1