【发布时间】:2021-04-28 00:06:36
【问题描述】:
假设我声明了以下数组:
char *arr[3];
在运行程序期间,根据用户的输入,我可能会也可能不会将内存字符串分配到这个数组中(意思是arr[i])。
在程序结束时free(arr[i]) 是否安全而不检查我分配了哪些?或者这会导致错误吗?
谢谢!
【问题讨论】:
-
如果
arr[i]指向NULL是安全的,使用未初始化的指针调用free是未定义的行为。 -
char *arr[3];上的免费电话是undefined behavior。在某些平台上,它可能会导致分段违规。在 所有 平台上 - 这只是“错误”。不要这样做!另见:free() function without malloc or calloc -
@paulsm4:如果
char *arr[3];被定义为一个全局变量,它将被初始化为空指针并且调用free(arr[0])就可以了。你能说得更具体点吗?
标签: c visual-studio malloc free