在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是內存泄漏?內存泄漏有哪些現象

工程師鄧生 ? 來源:嵌入式悅翔園 ? 作者:JamesBin ? 2022-09-05 17:24 ? 次閱讀

前言

今天在做項目的時候被發現有個指針變量的輸出值總是莫名其妙,最后查清了原因發現是因為內存泄漏了!

有些小伙伴看到這就有點疑惑了,怎么內存還會泄漏呢?我只聽過漏水、漏油,還沒聽過內存還會泄漏!

內存泄漏幾乎是很難避免的,不管是老手還是新手,都存在這個問題,甚至 Windows 與 Linux 這類系統軟件也或多或少存在著內存泄漏。

所以我還是那句話:不會用指針就不要用,不要你埋的雷讓我來踩!

什么是內存泄漏

在計算機科學中,內存泄漏指由于疏忽或錯誤造成程序未能釋放已經不再使用的內存

內存泄漏并非指內存在物理上的消失,而指程序中已動態分配的堆內存由于某種原因程序未釋放或無法釋放,造成系統內存的浪費,導致程序運行速度減慢甚至系統崩潰等嚴重后果。

在C中出現內存泄漏的主要原因就是程序猿在申請了內存后,沒有及時釋放沒用的內存空間,甚至消滅了指針導致該區域內存空間根本無法釋放

知道了出現內存泄漏的原因就能知道如何應對內存泄漏,即:不用了的內存空間記得釋放,不釋放留著過年哇!

內存泄漏的嚴重后果

要說內存泄漏的后果,那我就告訴你,內存泄漏會讓你查程序查到懷疑人生,特別是對于新人來說,自己本來就對指針、內存這些東西不太熟悉,自己也不敢用,結果由于“大佬”的自信操作,造成你查起來真的非常非常費勁!

因為內存泄漏的堆積,最終消耗盡系統所有的內存。所以一次性內存泄漏并沒有什么危害,因為一次性的內存泄漏并不會堆積。但是如果你遇到的是隱式內存泄漏的危害性則非常大,因為較之于常發性,偶發性內存泄漏它更難被檢測到。

長期運行的程序出現內存泄漏,影響很大,如操作系統、后臺服務等等,出現內存泄漏會導致響應越來越慢,最終卡死。

內存泄漏有哪些現象

發生內存泄漏的代碼會被多次執行到,每次被執行的時候都會導致一塊內存泄漏,所以當你程序出現莫名其妙的問題時,記得想到這點。

另外內存泄漏還具有偶發性,發生內存泄漏的代碼只會被執行一次,或者由于算法上的缺陷,導致總會有一塊且僅一塊內存發生泄漏,同樣會出現莫名其妙的問題,并且這種問題還不是每次都會發生,比上面的情況更加莫名其妙。

程序在運行過程中不停的分配內存,但是直到結束的時候才釋放內存。嚴格的說這里并沒有發生內存泄漏,因為最終程序釋放了所有申請的內存。

但是對于一個程序,可能需要運行幾天、幾周甚至幾個月,不及時釋放內存也可能導致最終耗盡系統的所有內存。所以,我們稱這類內存泄漏為隱式內存泄漏。

如何避免內存泄漏

關于如何避免內存泄漏我總結了以下幾點:

在函數中看到有局部指針,就要警惕內存泄漏問題,養成進一步排查的習慣;

在內存分配后別忘記使用 free 進行釋放,alloca 函數除外;

確保自己寫的程序沒有在訪問空指針;

每次分配內存之后都應該及時進行初始化,可以結合 memset 函數進行初始化,calloc 函數除外;

每當向指針寫入值時,都要確保對可用字節數和所寫入的字節數進行交叉核對;

在對指針賦值前,一定要確保沒有內存位置會變為孤立的;

始終正確處理返回動態分配的內存引用的函數返回值;

結語

由于我是做汽車行業SOC開發的,所以內存泄漏真的很可怕,你想想你正在高速上開著車,結果由于內存泄漏,你的車載系統突然崩潰,你想想可怕不,剎車失靈,方向盤卡死!

所以汽車行業對于內存泄漏的要求是非常嚴格,會有專人review你寫的代碼,如果你申請完內存不釋放,那你完了!



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    3

    文章

    3545

    瀏覽量

    88707
  • Linux系統
    +關注

    關注

    4

    文章

    593

    瀏覽量

    27397
  • 內存泄漏
    +關注

    關注

    0

    文章

    39

    瀏覽量

    9218

原文標題:我真的被C語言里的內存泄漏整蒙了

文章出處:【微信號:嵌入式悅翔園,微信公眾號:嵌入式悅翔園】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    虛擬內存溢出該怎么處理 虛擬內存在服務器中的應用

    、虛擬內存溢出的原因 內存泄漏 :程序中未正確釋放的內存會導致內存泄漏,隨著時間的推移,這些
    的頭像 發表于 12-04 09:49 ?160次閱讀

    什么是泄漏電流試驗?

    泄漏電流的概念泄漏電流(leakagecurrent)也叫接觸電流,是指在沒有故障施加電壓的情況下,電氣中相互絕緣的金屬零件之間,或帶電零件與接地零件之間,通過其周圍介質或絕緣表面所形成的電流。泄漏
    的頭像 發表于 11-26 11:48 ?310次閱讀
    什么是<b class='flag-5'>泄漏</b>電流試驗?

    堆棧和內存的基本知識

    本文主要聊聊關于堆棧的內容。包括堆棧和內存的基本知識。常見和堆棧相關的 bug,如棧溢出,內存泄漏,堆內存分配失敗等。后面介紹軟件中堆棧統計的重要性,以及如何使用工具工具軟件中堆棧使用
    的頭像 發表于 08-29 14:10 ?471次閱讀
    堆棧和<b class='flag-5'>內存</b>的基本知識

    如何檢測內存泄漏

    檢測內存泄漏是軟件開發過程中一項至關重要的任務,它有助于識別和解決那些導致程序占用過多內存資源,從而影響程序性能甚至導致程序崩潰的問題。以下將詳細闡述幾種常見的內存
    的頭像 發表于 07-30 11:50 ?1904次閱讀

    NONOS 1.5.3/1.5.4 SSL內存泄漏的原因?

    我已經通過隨附的代碼驗證了當發生 SSL 握手錯誤時,會生成內存泄漏 此外,espconn_reconnect_callback不稱為信令ESPCONN_HANDSHAKE - TCP SSL 握手
    發表于 07-18 07:24

    使用system_show_malloc()檢查內存泄漏遇到異常怎么解決?

    我想使用system_show_malloc()檢查內存泄漏,但是當我調用該函數時,我得到了致命的異常: 致命異常 28 (LoadProhibitedCause): epc1
    發表于 07-10 06:32

    化工廠液體泄漏識別預警算法

    化工廠液體泄漏識別預警基于圖像識別算法是計算機視覺的基礎算法,例如VGG,GoogLeNet,ResNet等,化工廠液體泄漏識別這類算法主要是判斷圖片中目標的種類液體泄漏識別預警自動識別監控視頻中機械管道是否存在液體
    的頭像 發表于 07-03 08:35 ?403次閱讀
    化工廠液體<b class='flag-5'>泄漏</b>識別預警算法

    在CONSOLE中輸入tasks,help等指令后,調用free查看剩余內存發現遞減,為什么?

    在CONSOLE中輸入tasks,help等指令后,調用free查看剩余內存發現遞減。 而free指令本身不會造成內存泄漏
    發表于 06-26 07:17

    C語言內存泄漏問題原理

    內存泄漏問題只有在使用堆內存的時候才會出現,棧內存不存在內存泄漏問題,因為棧
    發表于 03-19 11:38 ?528次閱讀
    C語言<b class='flag-5'>內存</b><b class='flag-5'>泄漏</b>問題原理

    煤氣柜泄漏問題如何解決

    電子發燒友網站提供《煤氣柜泄漏問題如何解決.docx》資料免費下載
    發表于 03-05 17:49 ?0次下載

    揭示真空泄漏測試儀的原理和優點

    在現代工業生產和科學研究中,密封檢測是一個至關重要的質量控制環節。許多行業對產品密封性能的要求越來越嚴格,催生了一系列高效、精密的泄漏檢測技術。其中,真空泄漏檢測儀因其工作原理和顯著優勢成為行業
    的頭像 發表于 03-04 11:57 ?432次閱讀
    揭示真空<b class='flag-5'>泄漏</b>測試儀的原理和優點

    【鴻蒙】webview內存泄漏問題的分析報告

    1 關鍵字 webview;內存泄漏 2 問題描述 問題現象:在 3.1release 版本和 3.2bete1 版本中,在 RK3568 上使用 etsWeb 和其他瀏覽器時,webview 所占
    的頭像 發表于 03-02 15:12 ?2157次閱讀

    什么是內存泄漏?android中導致內存泄漏的主要幾個點

    當一個對象已經不需要在使用了,本應該被回收,而另一個正在使用的對象持有它的引用,導致對象不能被回收。
    的頭像 發表于 02-20 10:17 ?594次閱讀
    什么是<b class='flag-5'>內存</b><b class='flag-5'>泄漏</b>?android中導致<b class='flag-5'>內存</b><b class='flag-5'>泄漏</b>的主要幾個點

    變壓器如何減小泄漏感應呢?

    變壓器如何減小泄漏感應呢? 變壓器是一種用來改變交流電壓的重要設備。在變壓器中,存在著一種稱為泄漏感應的現象泄漏感應是指變壓器在工作過程中,由于磁場的存在產生的感應電動勢,但是這部分
    的頭像 發表于 01-30 17:04 ?1335次閱讀

    什么是氣密性泄漏設備

    氣密性泄漏設備是指用于檢測氣體或液體密封性能的設備,其工作原理是通過檢測設備內部壓力的變化來判斷密封是否完好。這種設備廣泛應用于航空航天、石油化工、電力等領域,用于檢測各種管道、閥門、壓力容器等設備
    的頭像 發表于 01-19 11:34 ?671次閱讀
    什么是氣密性<b class='flag-5'>泄漏</b>設備
    主站蜘蛛池模板: 91极品女神嫩模在线播放| 轻点太大了好深好爽h文| 在线www天堂资源网| 你懂的国产精品| 天天夜夜啦啦啦| 亚洲a区视频| 亚洲一区二区三区四 | 最新理论三级中文在线观看| 欧美一区二区三区高清视频| 一级片a| 91人成网站色www免费| 日韩美女奶水喂男人在线观看| 4虎影视国产在线观看精品| 俄罗斯美女69xxxxxx| 色婷婷狠狠| 国内外精品免费视频| 五月天狠狠| 久久9热| 黄色二级视频| ak福利午夜在线观看| 四虎影视大全免费入口| 亚洲免费黄色网| 热久久久| 国内自拍露脸普通话对白在线| 2023天天操| 日本色片视频| 男女性高爱潮免费的国产| 一级毛片黄色| 506rr亚洲欧美| 男女交性视频免费| 韩国三级理在线视频观看| 亚洲综合校园春色| 人与牲动交xx| 国产精品午夜寂寞视频| 色综合天天综合网国产人| 天天干天天曰| 一级毛片 在线播放| 亚洲午夜网| 最好看的最新中文字幕2018免费视频 | 1717国产精品久久| 久久精品人人爽人人爽快|