C++記憶體管理變革

來源:互聯網
上載者:User

引言

C/C++語言的記憶體管理經曆了幾次變革,但至今仍未能趨於成熟。這幾次變革主要包括:

1. 從malloc/free到new/delete。這場變革是OOP技術興起的產物。C++是強型別語言,new/delete的主要成果也就是加強了類型觀念,減少了強制類型轉換的需求。但是從記憶體管理角度看,這個變革並沒有多少的突破性。

2. 從new/delete到記憶體配置器(allocator)。自從STL被納入C++標準庫後,C++世界產生了巨大的變化。而從記憶體管理角度來看,allocator的引入也是C++記憶體管理一個突破。留意一下你就可以發現,整個STL所有組件的記憶體均從allocator分配。也就是說,STL並不推薦使用new/delete進行記憶體管理,而是推薦使用allocator。

然而,STL的allocator並沒有導致C++語言在記憶體管理上發生巨大的變化。除了STL本身外,並沒有多少人使用allocator,甚至是意識到allocator的重要性。所以C++程式員在使用STL的同時,依舊在使用new/delete進行煩瑣的記憶體配置/釋放過程。

究其原因,主要有二。一是allocator的引入,STL設計者主要可能還是出於將記憶體管理從容器的實現獨立出來的設計理念作用,讓STL使用者在記憶體管理演算法上有選擇的餘地。設計者本身都可能也沒有意識到allocator的重要性。二是allocator本身也只是側重於關注效率上,而沒有側重於C++語言使用者對記憶體管理觀念的變革上。

總之,在我看來,STL的引入allocator,是一件了不起的事情。但是這場變革被忽視了,沒有得到貫徹。當然,這也與STL的allocator本身的缺陷有關。

本文要討論的,正是如何貫徹STL的allocator思想,對其進行適當的改進,以期在C++記憶體管理觀念上產生變革性的突破,徹底淘汰傳統的new/delete記憶體管理方法。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.