色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

嵌入式軟件內存與指針相關問題

麥辣雞腿堡 ? 來源:嵌入式系統 ? 作者:嵌入式系統 ? 2023-12-07 16:07 ? 次閱讀

隱性的內存泄露問題

內存泄漏(Memory Leak)是指程序中已動態分配的堆內存由于某種原因程序未釋放或無法釋放,造成系統內存的浪費,導致程序運行速度減慢甚至系統崩潰等嚴重后果。內存泄露是一個嚴重的慢性病,不會立即展現,但不知道未來的哪一天,所有的設備,會在相近的時間點爆發問題。

內存泄漏還會導致系統意外的重啟,重啟的原因可能千奇百怪。因此,檢測和解決內存泄漏,就顯得非常重要。

1. 泄漏的原因

內存泄漏主要是發生在堆內存分配方式中,即malloc方式中,申請的內存沒有得到釋放,或者對應的指針被被覆蓋,內存直接泄漏。因為內存泄漏屬于程序運行中的問題,無法通過編譯識別,主要在程序運行過程中來判別和診斷。

2. 動態檢測或監控是否內存泄露

監控系統內存,周期性監控堆中可用內存的大小,是檢測系統是否有內存泄漏的最有效的手段。系統的內存短期會隨著業務數據的變化而變化,但長期來看,可用的剩余可用內存會圍繞一個中軸線上下波動,如果存在內存泄漏,其剩余可用內存隨隨著時間的推移逐漸減少。

3. 如何找到在哪兒內存泄露

可以使用工具檢測代碼中有沒有靜態的內存泄露,也可以在代碼中增加標記,檢測長期未釋放的堆是誰申請的,在代碼中查找。可以參考文章《動態內存管理及防御性編程》。

指針跑飛的問題

指針跑飛就是指針指向不正確的位置,指針未初始化或數組/指針越界訪問,導致系統崩潰。

指針跑飛是常見的問題,問題很嚴重,但解決起來其實并不難,指針跑飛系統crash時,如果平臺軟件會打印出函數調用棧、segment fault錯誤、代碼出錯的地方、coredump文件等信息。有了這些信息,再分析源代碼,其實是很容發現或找出當前代碼中指針跑飛的原因的。

如果基于第三方的SDK開發,指針跑飛直接就重啟,可能不會有任何提示,因此,最好能夠在編碼時就能夠提前預防,而不是等待程序跑飛之后再定位解決 。

常見的手段:

1、熟悉和遵守代碼編寫規范,加強代碼的評審,把問題消滅在編碼階段。

2、靜態檢測工具對代碼進行檢測。

3、增加邊界性測試用例,一般指針異常是在邊界或異常情形下發生的。

4、增加異常場景的測試,異常場景是違反常規的測試場景,這些異常業務場景,能夠盡早shi發現隱藏的問題。

空指針的問題

空指針是“指針跑飛”的一種特殊情況,即指針為NULL,通常出現在指針用NULL值初始化后,在某些情況下沒有給指針賦值,就直接使用指針范圍內存。或者接收函數返回的指針變量,忽略了函數返回NULL的情形。

在使用指針前,檢查指針是否為空,如果為空,在代碼中執行異常處理流程,如打印出錯信息,或者ASSERT,這樣就可以避免引起更嚴重的問題,相對來說多使用一個if即可規避。

棧溢出導致的問題

棧溢出時會訪問不存在的RAM空間,造成代碼跑飛,這時無法得到溢出時的上下文數據,也無法對后續的程序修改提供有用信息。

函數遞歸調用,系統要在棧中不斷保存函數調用時的現場和產生的變量,如果遞歸調用太深,就會造成棧溢出。函數內局部數組變量的內存空間過大,或者局部數組變量的下標范圍溢出,破壞了棧空間中的內容。這種問題容易解決但初始不容易查到原因。如果是帶操作系統的,一般系統內核會直接提示棧空間不足,將任務棧空間加大,或者不靜態分配,用malloc動態創建,從堆中分配的。平時編碼中禁止使用循環遞歸函數。

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

    關注

    8

    文章

    3028

    瀏覽量

    74096
  • 嵌入式軟件
    +關注

    關注

    4

    文章

    240

    瀏覽量

    26653
  • 檢測工具
    +關注

    關注

    0

    文章

    21

    瀏覽量

    2024
收藏 人收藏

    評論

    相關推薦

    #嵌入式軟件設計 指針別名

    嵌入式指針嵌入式軟件
    電子技術那些事兒
    發布于 :2022年09月02日 23:25:02

    嵌入式軟件工程師的內功修煉

    應用設計師(裸機或操作系統移植調度驅動API按照一定的算法邏輯實現相應的需求功能),嵌入式算法設計師(把相關數學算法設計成軟件程序精準優化系統功能,如PID控算、卡爾曼濾波算法、低通濾波等)。C語言就是
    發表于 11-03 15:33

    嵌入式軟件測試的秘訣

    嵌入式軟件測試的秘訣:1、懂的使用工具;2、盡早發現內存問題(指針越界,數據類型超限等);3、深入理解代碼優化;4、重現并隔離問題;5、確定測試的完整性;6、利用初學者的思維,去發現問
    發表于 10-27 07:38

    嵌入式軟件是如何運行的?

    1. 上電復位、板級初始化階段? 嵌入式系統上電復位后完成板級初始化工作。? 板級初始化程序具有完全的硬件特性,一般采用匯編語言實現。不同的嵌入式系統,板級初始化時要完成的工作具有一定的特殊性,但
    發表于 10-28 09:14

    嵌入式系統內存優化使用

    響應運行。并且經過實踐證明,嵌入式系統內存優化使用,能夠提升系統空間5%內存,確保系統順利運行。【關鍵詞】 嵌入式 Linux系統 內存優化
    發表于 11-04 06:23

    分享一些嵌入式系統編程中內存操作相關的避坑指南

    嵌入式系統的編程中,內存操作是我們常用到的,但往往也是易錯的地方,怎么避免呢,今天給大家分享一些相關的避坑指南。數據指針...
    發表于 12-17 07:18

    嵌入式指針相關資料分享

    一:嵌入式指針(embedded pointer) (1.1)嵌入式指針概念 一般應用在內存相關
    發表于 12-20 07:11

    使用后嵌入式指針的方法

    通過嵌入式指針,進行改進,提高效率#include#includeusing namespace std;namespace myf{//嵌入式指針class B{private: i
    發表于 12-20 06:06

    嵌入式Web訪問時的內存丟失問題

    嵌入式Web訪問時的內存丟失問題 由于嵌入式技術的發展,嵌入式Web服務器軟件越來越大,對硬件的要求也相應地提高,但在工業現場的底層控制中
    發表于 11-20 09:41 ?606次閱讀
    <b class='flag-5'>嵌入式</b>Web訪問時的<b class='flag-5'>內存</b>丟失問題

    嵌入式軟件是什么意思_嵌入式軟件的分類有哪些

    本文首先闡述了嵌入式軟件的概念,其次介紹了嵌入式軟件的特征,最后介紹了嵌入式軟件的分類。
    發表于 08-31 15:54 ?1.6w次閱讀

    嵌入式軟件的開發流程_嵌入式軟件的調試

    本文首先介紹了嵌入式軟件的發展,其次闡述了嵌入式軟件的開發流程,最后介紹了嵌入式軟件的調試。
    發表于 08-31 16:02 ?6315次閱讀

    嵌入式系統的內存指針操作

    到處理器的內存空間中。在x86系統中,分為內存和I/O映射兩種內存;在ARM體系中,全部的地址都在32位的內存空間中,所有的操作都是對32位地址空間
    的頭像 發表于 08-27 11:33 ?6212次閱讀

    嵌入式軟件測試總結

    嵌入式軟件測試的秘訣:1、懂的使用工具;2、盡早發現內存問題(指針越界,數據類型超限等);3、深入理解代碼優化;4、重現并隔離問題;5、確定測試的完整性;6、利用初學者的思維,去發現問
    發表于 10-20 19:21 ?2次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>測試總結

    嵌入式技能樹】

    程師嵌入式硬件工程師通用技能樹軟件C/C++語言編程經驗、編程能力、應用開發、OOP面向對象編程方式、軟件框架、C指針、文件IO、進程線程、高級IO、對C++中的智能
    發表于 10-21 10:21 ?16次下載
    【<b class='flag-5'>嵌入式</b>技能樹】

    嵌入式軟件概述及相關測試特點

    概述:什么是嵌入式軟件?與傳統軟件不同,嵌入式軟件需要將軟件分析、設計、編碼后燒錄至硬件環境中才
    發表于 10-21 11:36 ?13次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>概述及<b class='flag-5'>相關</b>測試特點
    主站蜘蛛池模板: 精品久久久久中文字幕加勒比东京热 | 国产亚洲人成网站在线观看播放| 国产偷国产偷亚洲高清人乐享 | 男女久久久国产一区二区三区| 好嗨哟在线看片免费| 国产精品成人自拍| 粉嫩AV国产一区二区福利姬| 亚洲视频免费| 亚洲国产韩国欧美在线不卡 | 99精品视频在线免费观看 | 蜜芽无码亚洲资源网站| 乱精品一区字幕二区| 老师机影院| 免费视频国产| 欧美在线看费视频在线| 欧美亚洲另类图片| 日本色呦呦| 手机移动oa| 男生互捏jiji的故事| 蜜芽最新域名解析网站| 欧美z000z猪| 金瓶梅 快播| 久久99影院| 久久精选视频| 美女被爆插| 欧美一区二区视频在线观看| 青青视频 在线 在线播放| 日本久久不射| 手机移动oa| 亚洲欧美免费无码专区| 中文无码在线观| 99久久99久久久精品齐齐鬼色| yy8090理论三级在线看| 中文字幕在线不卡精品视频99| 中文字幕福利视频在线一区| 24小时日本在线观看片| couo福利姬图库| 国产精品高清在线观看93| 国内精品久久影视免费| 脔到她哭H粗话HWWW男男动漫| 欧美精品乱码99久久蜜桃|