欢迎来到天天文库
浏览记录
ID:57725241
大小:14.00 KB
页数:1页
时间:2020-09-02
《内存分配策略.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.分大块:a)第一块,分配的最小单位为8字节,每次分配一定是8字节的倍数(下同)b)第二块,分配的最小单位为80字节,用于分配大小为80整数倍、或大于8000字节的内存;不是80整数倍的内存、且小于8000大小的内存将在第一块中分配c)第三块,分配的最小单位为800,用于分配大小为800整数倍、或大于80000的内存;不是800整数倍、且小于80000大小的内存将在第二块中分配d)下同……2.每块的分配方法:a)每块内存都有一定字节的信息部分,这部分放在分配的内存的开始部分,返回给用户的指针不包括这部分b)信息结构体:前一块长度(4字节,最小长度的整数倍),当前块长度
2、(4字节,最小长度的整数倍),是否在使用(1字节),上次地址(4字节),上次查找是否有其它内存(1字节)c)分配方法是下次适配法,但是如果在找到适合的内存之前有其它未使用内存,则下一次从头开始查找,否则从当前位置开始d)每次分配之后,需要填写相邻的下一块内存的头信息部分中的前一块长度部分e)每次释放后,要查看前后相邻的内存块是否能合并,能合并则合并,一直要处理到前后都无法合并为止3.大块的生成方法:a)同类大块的结构体:块的最小分配单位(单位字节,长度4字节),块大小(最小分配单元的数量,4字节),有效块数量(4字节),最大块数量(数组的长度,4字节),各个块起始地址(
3、用数组存放)b)单个大块结构:上次查找到的最大内存空间(4字节),上次查找到的内存地址(4字节)i.单个大块结构数据并没有独立于内存块,而是作为连续内存块的信息头存在c)当块使用数量为0时释放整个块,将最后一个有效块的地址放到块超始地址数组的当前位置上,并将最后一个置NULLd)当块起始地址数组不够用时,申请更大的数组,复制原数组里的值,然后释放原数组e)不同类大块用MAP存储,以最小分配单元为键,以大块的信息结构体地址为值f)分配最小单位相同的块为同一类,同一类块的大小都是相同的g)类初始化时,并没有生成各类大块,仅当用户申请时才会根据用户的申请的数量生成
此文档下载收益归作者所有