先自問一個問題:C++有幾種new?

  我一直以為是兩種:operator new 和 placement new。剛剛查了下,原來是3種:還有一個是new operator。而且,我還弄錯了一個...但是,無論如何,我們能夠改變的只有兩個:

  1、operator new,分配內(nèi)存。

  2、placement new,構(gòu)造對象。

  而剩下的那個new operator很直白:負(fù)責(zé)調(diào)用上面兩個new。也就是其僅僅是語法層次上的東西,用來產(chǎn)生operator new和placement new的語義。

 

  這是一個不錯的開始,因為我要講的“內(nèi)存管理”,其實是上面所提到的所有:內(nèi)存分配和對象構(gòu)造。當(dāng)然,還有一個對稱的內(nèi)存釋放和對象析構(gòu),這些自然也會有,只是相對來說前者更加直白和重要。或者,我可以換一個題目:內(nèi)存與對象管理技術(shù)。

  這將是一個,或者說數(shù)個相當(dāng)大的話題;你不信,我可以給你一個列表(別眨眼):

  1、內(nèi)存池,特別是一個可用的內(nèi)存池,構(gòu)建一個是相當(dāng)困難的!其需要達(dá)到數(shù)個極其苛刻的要求:強(qiáng)悍的性能(否則我們還需要它?)、并發(fā)且線程安全(這點和上一點幾乎是矛盾的存在)、高可用性(意味著其有著合理的回收機(jī)制,否則可能會浪費大量內(nèi)存;而且能夠處理相當(dāng)畸形的環(huán)境,比如單一線程分配,單一線程回收)、可調(diào)試(簡直不可能!!!)。

延伸閱讀

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