C语言 用free函数释放在堆上申请的空间,这个函数到底做了什么
2016-07-25 19:14
393 查看
忘记之前在那个论坛上看到了评论,觉得不错就借鉴一下
free函数到底做了什么
内核通过一个红黑树来记录了空闲的内存,malloc就是从树中查找一块大小适合的内存并把地址给你,然后把这个节点从树中摘除,避免被别人分配到产生冲突。这个内存现在归你一个人用了。
free函数是把你的这个内存重新放回到红黑树中,让别人可以申请到这个内存。从逻辑上来说,你现在不能在使用这个内存了,因为它已经不属于你。但是系统的实现上目前没有做到,所以你还是能访问这个地址。
另外,系统也不会帮你覆盖内存中的数据,因为做这一个操作浪费时间,没有必要。
打一个简单的比方。你租了一套房子,后来租期到了,房子回到房东手里,或者又转租给别人。但是你拿着原来的钥匙还是能进入那套房子,虽然这个是不合法的。
free函数到底做了什么
内核通过一个红黑树来记录了空闲的内存,malloc就是从树中查找一块大小适合的内存并把地址给你,然后把这个节点从树中摘除,避免被别人分配到产生冲突。这个内存现在归你一个人用了。
free函数是把你的这个内存重新放回到红黑树中,让别人可以申请到这个内存。从逻辑上来说,你现在不能在使用这个内存了,因为它已经不属于你。但是系统的实现上目前没有做到,所以你还是能访问这个地址。
另外,系统也不会帮你覆盖内存中的数据,因为做这一个操作浪费时间,没有必要。
打一个简单的比方。你租了一套房子,后来租期到了,房子回到房东手里,或者又转租给别人。但是你拿着原来的钥匙还是能进入那套房子,虽然这个是不合法的。
相关文章推荐
- c++设计模式之组合模式
- 使用JNI进行Java与C/C++语言混合编程(1)--在Java中调用C/C++本地库
- C语言学习超前期
- C++实现ping功能
- c++ 初学者
- C语言 关键字!!面试常碰到!
- [置顶] C语言做的接鸡蛋小游戏(附源码注释)【原创】
- 指针数组
- C++_lesson_1,命令框编译源文件方法
- c/c++第一天
- c++较好程序:读取csv文件
- C语言的艺术初习
- C++编程实现从注册表中获取程序安装路径并调用exe文件
- 类继承学习一
- 对c语言的初步了解
- 开始C语言的学习。第一天
- 大话设计模式21----单例模式
- c++ STL 容器一些底层机制
- Windows C++ log4cplus编译开发配置详细步骤
- C语言 goto void extern sizeof enum typedef分析