1. 程式人生 > 其它 >25.簡易記憶體池分配問題

25.簡易記憶體池分配問題

有一個簡易記憶體池,記憶體按照大小粒度分類,每個粒度有若干個可用記憶體資源,使用者會進行一系列記憶體申請
需要按需分配記憶體池中的資源,返回申請結果成功失敗列表。


分配規則如下
1.分配的記憶體要大於等於記憶體的申請量,存在滿足需求的記憶體就必須分配,優先分配粒度小的,但記憶體不能拆分使用
2.需要按申請順序分配,先申請的先分配,有可用記憶體分配則申請結果為true,沒有可用則返回false
註釋:不考慮記憶體釋放

輸入描述
輸入為兩行字串,第一行為記憶體池資源列表,包含記憶體粒度資料資訊,粒度資料間用逗號分割
一個粒度資訊內用冒號分割,冒號前為記憶體粒度大小,冒號後為數量
資源列表不大於1024,每個粒度的數量不大於4096

第二行為申請列表
申請的記憶體大小間用逗號分割,申請列表不大於100000


64:2,128:1,32:4,1:128
50,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