c - 释放通过 malloc 获得的结构数组

标签 c malloc free

所以我有这个结构:

typedef struct type {
      int a;
      char* b;
} type;

main 程序中,我创建了 2 个这些结构的数组,并使用 malloc():

type *v;
type *w;
v=malloc(50*sizeof(type));
w=malloc(50*sizeof(type));

现在,如果我想释放这些结构数组,这样做是否正确:

free(v);
free(w);

?

最佳答案

是的,这是正确的。您只需要传递malloc() 和family 返回的指针即可。

调用 free() 时无需提及/提供分配内存的大小。大小将自动处理(由操作系统)。

FWIW,如果你已经为成员分配了动态内存,比如w[i].bs,你需要先free()它们,因为, 一旦你在 w 上调用了 free() ,在 w[i].b 中分配的所有内存将变得不可访问,因此你的程序将正在泄漏内存。

关于c - 释放通过 malloc 获得的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157236/

相关文章:

c - malloc 的问题

c - 令人困惑的行为,malloc 和 free(),以及 libuv

c - 执行 free() 时出错,显示 "glibc detected double free or corruption"

c - "int"真的需要至少与 C 中的 "short"一样大吗?

ios - CGColor内部结构

c - Valgrind — 堆统计数据很奇怪 : memory leak?

c - 从 K&R 书中解释 malloc 的这种实现

c - 生成随机数,范围从32字节的随机数据开始,没有bignum库

c - 如何在我的代码中使用 Git 的 malloc 包装器?

c - 尝试释放结构中的指针时出现内存错误 - C