5.1需求分析
1.创建堆
根据传入的内存指针、长度以、堆内块大小、最大行的块数量创建一个堆并返回堆对象指针。
2.删除堆
根据传入的堆对象指针删除堆。
3.从堆中分配行
根据传入的堆对象指针和需要分配的内存长度从堆中分配若干个连续的块组成一行。如果分配的行的块个数不是2的幂,则需要将分剩余部分分割成若干个行关联到空闲伙伴表中。
4.释放内存到堆中
根据传入的堆对象指针和需要释放的行指针,将行释放到堆中。如果释放非对齐行(行中的块数量不是2的N次幂),需要将行分割为若干对齐行再关联到伙伴表中,如果释放的行存在伙伴行,则需要将两个空闲伙伴行合并为一个空闲行。
5.查询堆中每个块的容量(可测试性需求)
6.查询堆中总的块数量(可测试性需求)
7.查询堆所支持的最大空闲行容量(可测试性需求)
8.查询堆中当前最大空闲行容量(可测试性需求)
9.查询堆中总空闲块数量(可测试性需求)
10.查询堆中指定长度的空闲行数量(可测试性需求)
11.创建任务局部堆
从MMS中申请内存并使用申请的内存创建一个堆,将堆对象指针保存到指定任务上下文中。
12.删除任务局部堆
清除指定任务局部堆指针,并将删除堆对象,释放堆内存到MMS中。
13.查询任务局部堆指针
从任务上下文对象中返回局部堆指针。
14.从局部堆中分配内存
根据查询到的局部堆指针,从该堆中分配内存。
15.释放内存到局部堆中
根据用户传入的内存指针和查询到的局部堆指针,将内存释放到局部堆中。