Cortex-M3-指针和野指针
生活随笔
收集整理的這篇文章主要介紹了
Cortex-M3-指针和野指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Cortex-M3-指針和野指針
- 什么是指針?指針在內存中實際上是一個無符號整數(unsigned int),但是它的值被賦予特殊的解釋:表示變量或函數的地址。所以才被形象地稱為“指針”,就好像指向誰家似的。在使用指針前,都必須先讓它指向有意義的,并且允許由程序使用的實體——數據和代碼。而所謂“野指針”,就是指某個指針變量的值因故超出合法的范圍,使其“槍口”亂指。程序邏輯錯誤、數組越界、堆棧溢出、指針未經初始化、對緩存與緩沖的處理不當、多任務環境中的紊亂條件,甚至是惡意地破壞等,都可以制造出野指針。如果使用野指針去讀取或修改內存,則被讀取或修改的位置是不可預料的。前者導致讀回來的都是亂掉的數據,后者則會破壞未知用途的數據。這常常導致系統發生莫名其妙的功能紊亂,嚴重時會使系統毫無征兆,沒有理由地失控、死機。
- 野指針就像“肉里的刺一般:一個野指針就足以毀掉整個系統,而且極其隱蔽,很難通過癥狀來找出是哪里存在野指針,甚至都不能判定癥狀是否因野指針造成(程序大了其它 bug 也很多,并且也能導致相同的癥狀)。對于通常的單片機系統,是沒有任何辦法來防止野指針的破壞的,完全靠程序員的素質和自律。但智者千慮,必有一失。尤其是當程序規模變得很大時,復雜度會呈指數上升,千頭萬緒糾纏不清,就算是謹慎如諸葛亮,聰明如比爾?蓋茨的天才,也不敢保證沒有漏網之魚。
- 因此出現了 MPU 和 MMU.
總結
以上是生活随笔為你收集整理的Cortex-M3-指针和野指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cortex-M3-建立向量表
- 下一篇: Cortex-M3-MPU(存储器保护单