內存溢出 out of memory
指程序在申請內存時,沒有足夠的內存空間供其使用,出現out of memory;比如申請了一個integer,但給它存了long才能存下的數,那就是內存溢出。
內存泄露 memory leak
是指程序在申請內存后,無法釋放已申請的內存空間,一次內存泄露危害可以忽略,但內存泄露堆積后果很嚴重,無論多少內存,遲早會被占光。
內存泄漏的分類:
1.對內存泄漏(malloc new之類的)
2.系統資源泄漏(使用的系統資源Bitap SOCKET之類的沒有使用相應的函數釋放掉)
3.沒有將基類的析構函數定義為虛函數。
內存泄漏如何判斷?
為了判斷內存的泄漏,一方面可以使用Linux環境下的內存泄漏檢查工具valgrind,另一方面在寫代碼時可以增加內存申請和釋放的統計功能。看申請的和釋放的是否一致來判斷是否有內存泄漏的情況發生。