专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅
  malloc实质体现在它有个将可用内存块连接为个长长列表所谓空闲链表malloc时它沿连接表寻找个大到足以满足用户请求所需要内存块然后将该内存块分为 2(块大小和用户请求大小相等另块大小就是剩下字节)接下来将分配给用户那块内存传给用户并将剩下那块(如果有话)返回到连接表上free时它将用户释放内存块连接到空闲链上到最后空闲链会被切成很多小内存片段如果这时用户申请个大内存片段那么空闲链上可能没有可以满足用户要求片段了于是malloc请求延时并开始在空闲链上翻箱倒柜地检查各内存片段对它们 [阅读全文] [PDF]
事实上仔细看下free原型也许也会发现似乎很神奇free非常简单只有个参数只要把指向申请空间指针传递 给free中参数就可以完成释放工作!这里要追踪到malloc申请问题了申请时候实际上占用内存要比申请大超出空间是用来记录对这块内存管理信息先看下在UNIX环境高级编程中第 7章段话: 大多数实现所分配存储空间比所要求要稍大些额外空间用来记录管理信息——分配块长度指向下个分配块指针等等这就意味着如果写过个已分配区尾端则会改写后块管理信息这种类型是灾难性但是这种不会很快就暴露出来所以也就很难 [阅读全文] [PDF]
1 共2条 分1页