严格来说,C标准是否要求必须在malloc之后调用free以及在不满足此
发布时间:2020-12-16 10:08:13 所属栏目:百科 来源:网络整理
导读:从 http://en.cppreference.com/w/c/memory/malloc开始: The returned pointer must be deallocated with free() or realloc(). 从http://en.cppreference.com/w/c/memory/calloc开始: The returned pointer must be deallocated with free() or realloc()
从
http://en.cppreference.com/w/c/memory/malloc开始:
从http://en.cppreference.com/w/c/memory/calloc开始:
严格来说,为什么必须取消分配返回的指针? 现在我知道POSIX要求在程序终止时释放内存,所以在实践中调用malloc并立即终止不会造成任何伤害.但这不是我要问的问题. 这个硬性要求(“必须被解除分配”)存在于C标准中,或者这是cppreference贡献者的发明,是为了敦促程序员不要泄漏内存?如果标准中存在这样的硬性要求,这是否意味着,根据C标准(POSIX和其他OS相关的事情除外!),如果malloc返回的指针未被释放,则程序为UB,或者标准定义了未能满足此要求的后果? (这将特别有趣,因为这可能意味着标准处理程序已经终止时会发生什么!) 解决方法
当他们在cppreference.com上说“返回的指针必须被释放”时,他们并不意味着程序员必须这样做.这意味着“当分配的内存被释放时,必须使用free或realloc完成,因为只有这些函数才能正确执行.”在实际规范中没有这样的命令.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |