开发者社区> 问答> 正文

动态分配的内存一旦释放之后你就不能再使用, 是吧?

动态分配的内存一旦释放之后你就不能再使用, 是吧?

展开
收起
游客56pszsvgthciu 2022-03-29 02:30:05 519 0
1 条回答
写回答
取消 提交回答
  • 是的。有些早期的 malloc() 文档提到释放的内存中的内容会 ``保留", 但这个欠考虑 的保证并不普遍而且也不是 C 标准要求的。 几乎没有那个程序员会有意使用释放的内存, 但是意外的使用却是常有的事。 考虑下面释放单链表的正确代码:

    struct list *listp, *nextp;
    for(listp = base; listp != NULL; listp = nextp) {
        nextp = listp->next;
        free(listp);
    }
    

    请注意如果在循环表达式中没有使用临时变量 nextp, 而使用 listp = listp-> next会产生什么恶劣后果。

    2022-03-29 02:30:33
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载