上一篇我們介紹了STL對(duì)象的構(gòu)造與析構(gòu),這篇介紹STL內(nèi)存的配置與釋放。

STL有兩級(jí)空間配置器,默認(rèn)是使用第二級(jí)。第二級(jí)空間配置器會(huì)在某些情況下去調(diào)用第一級(jí)空間配置器??臻g配置器都是在allocate函數(shù)內(nèi)分配內(nèi)存,在deallocate函數(shù)內(nèi)釋放內(nèi)存。

 

第一級(jí)空間配置器

 

第一級(jí)配置器只是對(duì)malloc函數(shù)和free函數(shù)的簡(jiǎn)單封裝,在allocate內(nèi)調(diào)用malloc,在deallocate內(nèi)調(diào)用free。同時(shí)第一級(jí)配置器的oom_malloc函數(shù),用來處理malloc失敗的情況。如下所示:

allocate對(duì)malloc函數(shù)簡(jiǎn)單封裝 :

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

static void *allocate(size_t n)
{          void *result = malloc(n);           if (NULL == result)
                    result = oom_malloc(n);           return result;
}

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

 

deallocate對(duì)free函數(shù)簡(jiǎn)單封裝 :

static void deallocate(void *p, size_t) { free(p); }

 

oom_malloc調(diào)用外部提供的malloc失敗處理函數(shù),然后重新試著再次調(diào)用malloc。重復(fù)執(zhí)行此過程,直到malloc成功為止 : 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式