Memory leak指的是由於錯誤或是由於疏忽造成程式未能釋放已經不再使用的記憶體。Memory leak指的並非記憶體的消失,而是在應用程式分配某段記憶體之後,由於設計錯誤,導致在釋放該記憶體之前就失去了對該段記憶體的控制因此造成了記憶體的浪費。
Memory leak會因為減少可用的記憶體數量,造成降低電腦的效能,在最差的情況下,會致使應用程式崩潰。
本文以C++實作執行。
當我們用new配置記憶體空間時,記得使用 deleter[]來釋放所使用的記憶體空間避免記憶體漏失。
char* str = new char [100];
delete [] str;
當我們重新分配記憶體空間,但是並沒有釋放記憶體空間時就會造成memory leak
char* str = new char [100];//第一段
str = new char [100];//第二段
delete [] str;//第三段
由於在配置完第一段的記憶體之後,並沒有釋放第一段的記憶體之後,又繼續的配置,所以我們第一段的內容既沒有釋放,也已經不能再次使用所以造成了失去度該段記憶體的控制,也就是memory leak。
有夢最美 築夢踏實
活在當下 認真過每一天
我是阿夢 也是Ace