【发布时间】:2020-01-21 14:27:30
【问题描述】:
我想了解如何使用free 函数。在下面的 sn-p 中,我使用 malloc 创建 ctx。
void serve(ctx **some_struct_type) {
// .. some operation
}
int main() {
context_t* ctx = malloc(sizeof(struct context_t));
serve(&ctx);
}
由于每个malloc调用都必须有一个对应的free调用,而我想在serve内部调用free,应该是free((**ctx))还是free((*ctx))?
我对必须调用 free 的方式有点困惑。
【问题讨论】:
-
如有疑问,请务必检查数据类型。
-
顺便说一句,您不应该为您自己的类型使用以
_t结尾的名称——这些名称是标准 C 保留的——您可以使您的分配更明显地适合变量的大小:ctx = malloc(sizeof *ctx);
标签: c memory-management malloc free