是的。有些早期的 malloc() 文档提到释放的内存中的内容会 ``保留", 但这个欠考虑 的保证并不普遍而且也不是 C 标准要求的。 几乎没有那个程序员会有意使用释放的内存, 但是意外的使用却是常有的事。 考虑下面释放单链表的正确代码:
struct list *listp, *nextp;
for(listp = base; listp != NULL; listp = nextp) {
nextp = listp->next;
free(listp);
}
请注意如果在循环表达式中没有使用临时变量 nextp, 而使用 listp = listp-> next会产生什么恶劣后果。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。