1. 程式人生 > >記憶體洩漏(memory leak)和記憶體溢位(out of memory)

記憶體洩漏(memory leak)和記憶體溢位(out of memory)

一、概念:

memory leak---記憶體洩漏:是指程式申請記憶體空間後,無法釋放。然而,記憶體洩漏不斷疊加會導致系統把記憶體花完,以致於發生記憶體溢位。(用了不還)

out of memory---記憶體溢位:是指程式申請的記憶體空間>系統能提供的記憶體空間。如:你申請了integer來裝long才能裝下的數,發生記憶體溢位。(用了不夠用)

二、記憶體洩漏

包括4種:

1. 常發性記憶體洩漏。發生記憶體洩漏的程式碼會被多次執行到,每次被執行的時候都會導致一塊記憶體洩漏。 

2. 偶發性記憶體洩漏。發生記憶體洩漏的程式碼只有在某些特定環境或操作過程下才會發生。

3. 一次性記憶體洩漏。發生記憶體洩漏的程式碼只會被執行一次,或者由於

演算法上的缺陷,導致總會有一塊僅且一塊記憶體發生洩漏。如:在建構函式new,而沒有在解構函式delete。

4. 隱式記憶體洩漏。程式在執行過程中不停的分配記憶體,但是直到結束的時候才釋放記憶體。(危害性則非常大,因為更難被檢測到