來了解一下記憶體溢位和記憶體洩漏

2022-03-23 02:00:52 字數 854 閱讀 6366

記憶體溢位 out of memory,是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用;比如你申請了10個位元組的空間,但是你在這個空間寫入11或以上位元組的資料,就是溢位 。

記憶體洩露 memory leak,是指程式在申請記憶體後,無法釋放已申請的記憶體空間,一次記憶體洩露危害可以忽略,但記憶體洩露堆積後果很嚴重,無論多少記憶體,遲早會被占光。

知乎某使用者①

記憶體洩露:用完扔了,沒有歸還。

記憶體溢位:霸佔不屬於你的資源。

知乎某使用者②

洩漏就是記憶體申請後,用完沒有釋放,造成可用記憶體越來越少。

溢位指使用者實際的資料長度超過了申請的記憶體空間大小,導致覆蓋了其他正常資料,容易造成程式異常,嚴重的,攻擊者可以以此獲取程式控制權。

知乎某使用者③

錢丟了vs錢不夠了

知乎某使用者⑤

記憶體溢位:你去買鞋,今天你趕時間,沒時間試。平時你穿42碼的,但是美女導購勸你說 『這個款式號碼偏大』,於是你買了1個41碼的。能不能穿?導購漂亮不漂亮?

記憶體洩露:你去買鞋,今天發工資了,你高興,但是昨天你踢球腳扭了還沒消腫。同1個品牌同1個款式,平時你穿42碼的,今天你試了試42碼的,但是穿不進去。你買不買?

知乎某使用者⑥

記憶體溢位,這個好理解,說明儲存空間不夠大。就像倒水倒多了,從杯子上面溢位了來了一樣。

記憶體洩漏,原理是,使用過的記憶體空間沒有被及時釋放,長時間占用記憶體,最終導致記憶體空間不足,而出現記憶體溢位。這個也很好理解,所謂的「洩漏」是相對釋放物件來定義的,逃脫了釋放物件的釋放,漏處理了,也就是洩漏。形象一點理解,就是乙個大的排放廢水的池子,你用水瓢(相當於釋放物件)瓢水,但是水瓢有個洞,漏了。

記憶體洩漏和記憶體溢位 記憶體洩漏和記憶體溢位

記憶體洩漏 是指申請的記憶體空間使用完畢之後未 一次記憶體洩露危害可以忽略,但若一直洩漏,無論有多少記憶體,遲早都會被占用光,最終導致程式crash。因此,開發中我們要盡量避免記憶體洩漏的出現 記憶體溢位 是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用。通俗理解就是記憶體不夠用了,通常在執行大...

記憶體溢位和記憶體洩漏

記憶體溢位 oom 指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現oom 記憶體洩露memory leak 指程式在申請記憶體後,無法釋放已申請的記憶體空間,一直占用著這塊記憶體空間。記憶體溢位就是你要求分配的記憶體超出了系統能給你的,系統不能滿足需求,於是產生溢位。記憶體洩漏是指你向系統...

記憶體溢位和記憶體洩漏

記憶體溢位 out of memory,是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現out of memory 比如申請了乙個integer,但給它存了long才能存下的數,那就是記憶體溢位。記憶體洩露 memory leak,是指程式在申請記憶體後,無法釋放已申請的記憶體空間,一次記...