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

STL有兩級(jí)空間配置器,默認(rèn)是使用第二級(jí)。第二級(jí)空間配置器會(huì)在某些情況下去調(diào)用第一級(jí)空間配置器。空間配置器都是在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ù),用來(lái)處理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í)行此過(guò)程,直到malloc成功為止 : 

網(wǎng)友評(píng)論