c++如何用数组来模拟动态内存分配
1个回答
展开全部
这个说起来有些麻烦,我以前做过类似的东西,手打不易啊。
一、你要定义一个数组,作为内存堆。
二、把上面定义的数组分页,比如4个字节更大字节一页,记录下每一页地址,可以定义得很大,越大管理这些内存需要的内存越小,但是也容易造成内存利用率不够。
三、上面分组后我们就可以定义一个结构体,大致包含内存页页号、是否已经被使用了,内存分配的唯一标识(用来区分哪些内存是同一片分配的内存)
四、这时候就可以写动态内存分配的函数了,根据需要分配的大小,找出一片未使用的连续的内存页。比如第二步中定义一页是4字节,需要5个字节的内存,就分配两页(多出来的3字节就没办法了,浪费掉了)。找到内存页后将几个内存页标记为已使用,同时给几个内存页赋想相同的内存分配标识,然后返回第一页的地址。
五、释放内存,根据内存分配的唯一标识,找到几片内存页,然后标记为未使用。
一、你要定义一个数组,作为内存堆。
二、把上面定义的数组分页,比如4个字节更大字节一页,记录下每一页地址,可以定义得很大,越大管理这些内存需要的内存越小,但是也容易造成内存利用率不够。
三、上面分组后我们就可以定义一个结构体,大致包含内存页页号、是否已经被使用了,内存分配的唯一标识(用来区分哪些内存是同一片分配的内存)
四、这时候就可以写动态内存分配的函数了,根据需要分配的大小,找出一片未使用的连续的内存页。比如第二步中定义一页是4字节,需要5个字节的内存,就分配两页(多出来的3字节就没办法了,浪费掉了)。找到内存页后将几个内存页标记为已使用,同时给几个内存页赋想相同的内存分配标识,然后返回第一页的地址。
五、释放内存,根据内存分配的唯一标识,找到几片内存页,然后标记为未使用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询