STL之防止記憶體洩露

2021-06-19 17:23:05 字數 714 閱讀 4049

可以自由分配和釋放記憶體造就了c++的靈活和強大,但這也是使用c++最容易出現問題的地方,記憶體洩露問題,估計程式猿都會或多或少的遇到,也遭受了很多程式猿們的深惡痛絕,無數個加班的晚上可能就是因為少了乙個delete的緣故。

用過c++的人基本上都應該會了較過乙個叫stl(標準模板庫)的東西,這個東西在一定程度上,更進一步推動了c++的發展和普及程式,裡面對於c++模板以及c++三大特性封裝、繼承、多型的使用可以說是淋漓盡致,具體的介紹可以參考侯捷老師的《stl原始碼剖析》。stl有乙個智慧型指標的東西,即auto_ptr,有了智慧型指標以後,再也不用擔心忘記呼叫delete釋放堆記憶體了。auto_ptr主要是通過建構函式來繫結堆記憶體指標,當auto_ptr物件銷毀的時候,其析構函式就會釋放掉繫結的堆記憶體,示例**如下:

void func1()

void func2()

上面的fun1函式在申請和釋放堆記憶體至少要兩句**,而使用auto_ptr的fun2函式只需要一句**就可以了,還能保證在退出作用於的時候自動釋放申請的記憶體空間,既乾淨又環保。

auto_ptr的實現就是《effective c++》提到的以物件管理資源的方法,眾所周知,類物件在退出其作用域時,會自動呼叫其析構函式,我們可以充分利用編譯器提供的便利,在物件的建構函式生產資源,在物件的析構函式釋放資源,這樣就不用擔心忘記釋放資源了,但是既然有了auto_ptr這樣的強大工具,我們沒必要再重造車輪了,直接拿來主義就好了。

vector清空 ,防止記憶體洩露

注 使用過第三種方法,可行!vector vecint for int i 0 i 500 i int j vecint.capacity j 512 i vecint.size i 500 第一種辦法使用 clear 清空元素,但不 空間 vecint.clear j vecint.capacit...

C 防止記憶體洩露的方法

一般程式設計師 都會這樣認為 用c 這樣的語言程式設計的乙個好處就是無需再考慮記憶體的分配和釋放。你只需建立物件,然後通過一種叫做垃圾收集的機制來處理這 些物件,也就是說 當它們不再被應用程式需要的時候來自動的清除這些物件。這個過程意味著c 解決了其它語言中極難處理的問題 可怕的記憶體洩露。真的是 ...

防止 gdi 洩露

gdi使用的幾個注意點 1 create出來的gdi物件,要用deleteobject釋放,create出來的dc,要用deletedc釋放,getdc得出的dc,用releasedc釋放。2 先create後delete,create1,create2,delete2,delete1的順序。3 畫...