释放非 malloc 的内存

时间:2021-01-23 19:30:54

标签: c visual-studio malloc free

假设我声明了以下数组:

char *arr[3];

在程序运行期间,根据用户的输入,我可能会或可能不会将内存字符串分配到这个数组中(意思是 arr[i])。

在程序结束时free(arr[i]) 不检查我分配了哪些是安全的吗?或者这会导致错误吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

将空指针传递给 free 是安全的,因此如果您的数组是用空指针初始化的,那么您可以安全地释放所有 arr[i],假设您只存储由 {{1} 返回的指针} 和朋友,不要在别处释放他们。

定义数组为

malloc()

或者干脆

char *arr[3] = { NULL, NULL, NULL };

char *arr[3] = { 0 }; NULL0 可用于指定空指针,但建议遵循简单明了的规则:

  • 使用 '\0' 作为空指针,
  • 使用 NULL 作为空整数,
  • 0 用于 '\0' 数组中的空字节,也称为空终止符。

并且您可以使用 char 作为任何 C 对象的初始化程序:所有元素和成员都将被初始化为其类型的零值,除了联合,其中只有第一个成员以这种方式初始化。

相关问题