假设我声明了以下数组:
char *arr[3];
在程序运行期间,根据用户的输入,我可能会或可能不会将内存字符串分配到这个数组中(意思是 arr[i]
)。
在程序结束时free(arr[i])
不检查我分配了哪些是安全的吗?或者这会导致错误吗?
谢谢!
答案 0 :(得分:0)
将空指针传递给 free
是安全的,因此如果您的数组是用空指针初始化的,那么您可以安全地释放所有 arr[i]
,假设您只存储由 {{1} 返回的指针} 和朋友,不要在别处释放他们。
定义数组为
malloc()
或者干脆
char *arr[3] = { NULL, NULL, NULL };
char *arr[3] = { 0 };
、NULL
和 0
可用于指定空指针,但建议遵循简单明了的规则:
'\0'
作为空指针,NULL
作为空整数,0
用于 '\0'
数组中的空字节,也称为空终止符。并且您可以使用 char
作为任何 C 对象的初始化程序:所有元素和成员都将被初始化为其类型的零值,除了联合,其中只有第一个成员以这种方式初始化。>