博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

飞翔,嵌入式linux

linux嵌入式系统必将大行于天下。专注于linux嵌入式系统的搭键,专注于高效稳定软件的开发,专注底层程序调试技术。
  feixiang.cublog.cn

关于作者
姓名:飞翔
Email:loughsky@sina.com
职业:IT
年龄:32
位置:北京
个性介绍:专注在嵌入式操作系统,以及高效程序调试
|| << >> ||
我的分类


关于free的内存释放
其中brk区(确切名字我不知道)可以用系统调用brk动态增长或缩小,malloc/free动态分配的内存就在brk区,内存分配算法由C库函数实现,与操作系统无关。需要更多内存时,调用sbrk/brk增长brk区,malloc一般不对应一次brk,一次brk分配比较大的块,malloc在这里再分,free一般只是更新空闲块,不调用任何系统调用,就是说free释放的内存可能不归还给系统,直到进程退出时才释放。

发表于: 2007-03-17,修改于: 2007-04-04 10:51,已浏览1065次,有评论2条 推荐 投诉


网友评论
网友: hqulyc 时间:2008-04-01 12:04:15 IP地址:125.77.237.★
就是说free释放的内存可能不归还给系统
===================
有没办法能让释放掉的内存立即归还给系统呢?

网友: 本站网友 时间:2008-04-01 12:47:43 IP地址:219.142.125.★
应该没有,首先我们malloc是以字节为单位;而在系统中是以页为单位,这两个是不匹配的。

另外就是太频繁的系统调用,会使进程的运行速度变得很慢。

 发表评论