如何解决释放非 malloc 的内存
假设我声明了以下数组:
char *arr[3];
在程序运行期间,根据用户的输入,我可能会或可能不会将内存字符串分配到这个数组中(意思是 arr[i]
)。
在程序结束时free(arr[i])
不检查我分配了哪些是安全的吗?或者这会导致错误吗?
谢谢!
解决方法
将空指针传递给 free
是安全的,因此如果您的数组是用空指针初始化的,那么您可以安全地释放所有 arr[i]
,假设您只存储由 {{1} 返回的指针} 和朋友,不要在别处释放他们。
定义数组为
malloc()
或者干脆
char *arr[3] = { NULL,NULL,NULL };
char *arr[3] = { 0 };
、NULL
和 0
可用于指定空指针,但建议遵循简单明了的规则:
- 使用
'\0'
作为空指针, - 使用
NULL
作为空整数, - 将
0
用于'\0'
数组中的空字节,也称为空终止符。
并且您可以使用 char
作为任何 C 对象的初始化程序:所有元素和成员都将被初始化为其类型的零值,除了联合,其中只有第一个成员以这种方式初始化。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。