先自問一個問題: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)試(簡直不可能!!!)。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26