其實(shí)本原則主要是建議你去實(shí)現(xiàn)new和delete的自定義,其根本原理是系統(tǒng)自帶的new和delete是一種緊具備基本功能的操作符,具有普遍適用性,不是說(shuō)你用系統(tǒng)自帶的new和delete不行,而是說(shuō)如果你自定義專(zhuān)屬的new和delete更好。
作者首先列舉了三大讓你自定義new和delete的理由:
1、用來(lái)檢測(cè)運(yùn)用上的錯(cuò)誤。這一點(diǎn)說(shuō)的是系統(tǒng)的new和delete是實(shí)現(xiàn)了基本的分配和回收功能,針對(duì)各種錯(cuò)誤,它們給出的處理方式過(guò)于生硬和抽象;
2、為了強(qiáng)化效能。系統(tǒng)自帶的new和delete是出于各種考慮,基于普遍適用原則而設(shè)計(jì)的,這就意味著廣泛而不專(zhuān)一。自定義版本的new和delete是針對(duì)具體情況而得出的具體解決方案更滿(mǎn)足你自己的需求;
3、為了收集使用上的統(tǒng)計(jì)數(shù)據(jù)。自定義的new和delete可以實(shí)現(xiàn)這些功能。
在這里介紹兩個(gè)概念——underruns和overruns。它們就是寫(xiě)入點(diǎn)在分配內(nèi)存的前端溢出和寫(xiě)入點(diǎn)在分配內(nèi)存的末端溢出。
作者舉了計(jì)算機(jī)存儲(chǔ)需要齊位的細(xì)節(jié),在這方面默認(rèn)的new和delete并不能滿(mǎn)足要求,于是很多廠家就自己寫(xiě)了內(nèi)存處理器,其中就包括自定義的new和delete。
接著作者對(duì)為什么要在恰當(dāng)?shù)臅r(shí)機(jī)自定義new和delete的理由做了補(bǔ)充:
4、為了增加分配和歸還的速度。一般來(lái)講系統(tǒng)自帶的new和delete比自定義的new和delete要慢,這主要是因?yàn)樽远xnew和delete是為專(zhuān)屬類(lèi)型區(qū)塊尺寸而設(shè)計(jì)的,而默認(rèn)new和delete不是;
5、為了降低缺省內(nèi)存管理器帶來(lái)的額外空間開(kāi)銷(xiāo)。默認(rèn)new和delete還需要額外的內(nèi)存開(kāi)銷(xiāo),如果處理的對(duì)象是小型的,那內(nèi)存開(kāi)銷(xiāo)就更大了;
6、為了彌補(bǔ)缺省分配器中的非最佳齊位。某些計(jì)算機(jī)體系結(jié)構(gòu)只對(duì)特定齊位保持最佳處理狀態(tài);
7、為了將相關(guān)對(duì)象成簇集中。某些數(shù)據(jù)對(duì)象往往被集中使用,而且你有希望將內(nèi)存也錯(cuò)誤的幾率降至最低,你往往希望把這些對(duì)象集中到另一個(gè)堆上去。
8、為了獲得非傳統(tǒng)行為。你可能希望自定義的new和delete完成更多的自定義功能。
總結(jié):
很多時(shí)候的確有必要自定義new和delete。
原則50:了解new和delete的合理替換時(shí)機(jī)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
- Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
- 題目?jī)?nèi)容: class Fruit{int no;double weight;char key;public:vo...
- 重走青春。一位充滿(mǎn)活力、激情洋溢的80末小兄弟電腦桌面背景?,F(xiàn)在的他可以約幾個(gè)好友說(shuō)走就走去自駕旅行,可以談...
- 小恩愛(ài)流程還原 胖大星 李一默 左一 摩拜功能優(yōu)化 Chelsea 陳泠伊 Num 東海 插猹的...