萬盛學電腦網

 萬盛學電腦網 >> 網頁制作 >> Html5 >> C++內存管理的變革

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本身的缺陷有關。

以上就是我們給大家介紹的C++內存管理的變革,希望大家繼續關注本網站。

copyright © 萬盛學電腦網 all rights reserved