野指针与内存泄漏那些事
野指針:不是NULL指針,是指向垃圾內存的指針
野指針成因:
1.指針變量沒有被初始化:指針變量在創建時同時應當被初始化,要么將指針設置為NULL,要么讓它指向合法的內存。
2.指針p被free或者delete,沒有被設置為NULL,讓人誤以為p是個合法的指針。
注意:不要返回指向棧內存的指針或引用,因為棧內存在函數結束時會被釋放。
內存泄漏:申請了一塊內存空間,使用完畢后沒有釋放掉,它的一般表現方式是程序運行時間越長,占用內存越多,最終用盡全部內存,整個系統奔潰。由程序申請的一塊內存,且沒有任何一個指針指向它,那么這塊內存就泄露了
?
內存泄漏4類
1.常發性內存泄漏:發生內存泄漏的代碼會被多次執行到,每次被執行的時候都會導致一塊內存泄漏
2.偶發性內存泄漏:特定環境發生
3.一次性內存泄漏:發生內存泄漏的代碼只會被執行一次,或者由于算法上的缺陷,導致總會有一塊僅且一塊內存發生泄漏。比如,在類的構造函數中分配內存,在析構函數中卻沒有釋放該內存
4.隱式內存泄漏:程序在運行過程中不停的分配內存,但是直到結束的時候才釋放內存。但對于一個服務器程序,需要運行時間長,不及時釋放內存也可能導致最終耗盡系統的所有內存。
?
內存泄漏表現:CPU資源耗盡;進程id耗盡;硬盤耗盡;內存泄漏或者內存耗盡
椎內存是指程序從椎中分配的,大小任意的,使用完后必須釋放的內存
應用程序一般使用malloc,realloc,new等函數從椎中分配到一塊內存,使用完后,程序必須負責相應的調用free或delete釋放該內存模塊,否則,這塊內存就不能被再次使用
轉載于:https://www.cnblogs.com/tryFighting/p/9197481.html
總結
以上是生活随笔為你收集整理的野指针与内存泄漏那些事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为mate10手机多少钱
- 下一篇: (十九)异常处理