記憶體洩露和記憶體溢位

2021-07-24 00:13:50 字數 822 閱讀 1697

一、記憶體洩露

1.定義:指由於疏忽或錯誤造成程式未能釋放已經不再使用的記憶體的情況。記憶體洩漏並非指內存在物理上的消失,而是應用程式分配某段記憶體後,由於設計錯誤,失去了對該段記憶體的控制,因而造成了記憶體的浪費。

2.洩露型別:

1>堆記憶體洩漏(heap leak)

a.指利用malloc或new進行堆記憶體分配後,沒有及時採用free或者delete釋放記憶體,從而導致這個記憶體不能使用,出現記憶體洩露

2>系統資源洩露(resource leak)

a.指程式使用系統分配的資源比如 bitmap,handle ,socket等沒有使用相應的函式釋放掉,導致系統資源的浪費,嚴重可導致系統效能降低,系統執行不穩定

3.如何解決

1>良好的程式設計習慣,malloc和free,new和delete配對使用

2>過載  new 和 delete

二、記憶體溢位

1.定義:記憶體溢位就是你要求分配的記憶體超出了系統能給你的,系統不能滿足需求,於是會產生記憶體溢位的問題

2.溢位型別:

1>記憶體分配未成功,卻使用了它

a.用if(p==null)或if(p!=null)進行防錯處理

2>記憶體分配雖然成功,但是尚未初始化就引用它

a.內存在分配完成之後,記得初始化

3>記憶體分配成功並且已經初始化,但操作越過了記憶體的邊界

a.如在使用陣列時經常發生下標「多1」或者「少1」的操作。特別是在for 迴圈語句中,迴圈次數很容易搞錯,導致陣列操作越界

4>使用free 或delete 釋放了記憶體後,沒有將指標設定為null。導致產生「野指標」

a.故釋放之後一定要指向null

記憶體洩露和記憶體溢位

size medium color red 記憶體洩漏是指分配出去的記憶體無法 了 color 記憶體洩漏指由於疏忽或錯誤造成程式未能釋放已經不再使用的記憶體的情況,是應用程式分配某段記憶體後,由於設計錯誤,失去了對該段記憶體的控制,因而造成了記憶體的浪費。color red 記憶體溢位是指程式要求...

記憶體溢位和記憶體洩露

記憶體溢位是指應用程式系統中存在無法 的記憶體或使用的記憶體過多,最終使得程式執行要使用到的最大記憶體大於虛擬機器能提供的最大記憶體。看到知乎上的例子 你在畫本上畫畫,本子畫完了,畫到桌子上,就是記憶體溢位 是指程式中己動態分配的堆記憶體由於某種原因程式未釋放或無法釋放,造成系統記憶體的浪費,導致程...

記憶體溢位與記憶體洩露

2019獨角獸企業重金招聘python工程師標準 兩者的區別 記憶體溢位 out of memory 指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現out of memory 比如申請了乙個integer,但給它存了long才能存下的數,那就是記憶體溢位。記憶體洩露 memory leak...