题目要求实现一个简易的内存池管理器。输入包含两行,第一行为内存池资源列表,格式为“粒度大小:数量”,不同粒度用逗号分隔;第二行为用户的内存申请列表,申请的内存大小用逗号分隔。程序需要按照先后顺序处理内存申请,优先分配粒度最小且大于等于申请量的内存,若有可用内存则分配,成功则返回true
,否则返回false
。输出为一个布尔列表,表示每次申请是否成功。
将所有资源按照大小和数量存起来并按照大小升序排列,对于每一个申请优先找第一个大于等于它的资源可以做到最优,二分查找即可
有一个简易内存池,内存按照大小粒度分类,每个粒度有若干个可用内存资源,用户会进行一系列内存申请,需要按需分配内存池中的资源返回申请结果成功失败列表。
分配规则如下:
注意:不考虑内存释放
输入为两行字符串
第一行为内存池资源列表,包含内存粒度数据信息,粒度数据间用逗号分割
第二行为申请列表,申请的内存大小间用逗号分割
如 64:2,128:1,32:4,1:12850,36,64,128,127
输出为内存池分配结果
如true,true,true,false,false
输入
64:2,128:1,32:4,1:128
50,36,64,128,127
输出
true,true,true,false,false
内存池资源包含:64K共2个、128K共1个、32K共4个、1K共128个的内存资源;
针对50,36,64,128,127的内存申请序列,分配的内存依次是:64,64,128,NULL,NULL,
第三次申请内存时已经将128分配出去,因此输出结果是:
true,true,true,false,false