內存泄漏和內存溢出的區別


內存溢出 out of memory

  指程序在申請內存時,沒有足夠的內存空間供其使用,出現out of memory;比如申請了一個integer,但給它存了long才能存下的數,那就是內存溢出。

內存泄露 memory leak

  是指程序在申請內存后,無法釋放已申請的內存空間,一次內存泄露危害可以忽略,但內存泄露堆積后果很嚴重,無論多少內存,遲早會被占光。
  內存泄漏的分類:

    1.對內存泄漏(malloc  new之類的)

    2.系統資源泄漏(使用的系統資源Bitap SOCKET之類的沒有使用相應的函數釋放掉)

    3.沒有將基類的析構函數定義為虛函數。

內存泄漏如何判斷?

  為了判斷內存的泄漏,一方面可以使用Linux環境下的內存泄漏檢查工具valgrind,另一方面在寫代碼時可以增加內存申請和釋放的統計功能。看申請的和釋放的是否一致來判斷是否有內存泄漏的情況發生。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM