日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

再次理解STM32中的堆栈机制

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 再次理解STM32中的堆栈机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

再次理解STM32中的堆棧機制

? ? ? ?剛拿到STM32時,你只編寫一個死循環

void main() { while(1); }BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-data=1632
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

? ? ? ?編譯后,就會發現這么個程序已用了1600多的RAM,這要是在51單片機上,會心疼死了,這1600多的RAM跑哪兒去了,分析.map文件,你會發現是堆和棧占用的?
在startup_stm32f10x_md.s文件中,它的前面幾行就有以下定義:

Stack_Size EQU 0x00000400 Heap_Size EQU 0x00000200
  • 1
  • 2

? ? ? ?這下明白了吧,STM32在啟動的時候,RAM首先分配給使用到的全局變量,還有調用庫占用的一些數據(不太清楚是什么數據)?
,然后再將剩余的空間分配給Heap和Stack。由于內存空間是啟動時實現分配好的,所以當動態分配內存的需求過多的時候,就會產生堆棧空間不足的問題。

查閱網上的資料,理解堆和棧的區別:?
- (1)棧區(stack):由編譯器自動分配和釋放,存放函數的參數值、局部變量的值等,其操作方式類似于數據結構中的棧。?
- (2)堆區(heap):一般由程序員分配和釋放,若程序員不釋放,程序結束時可能由操作系統回收。分配方式類似于數據結構中的鏈表。?
- (3)全局區(靜態區)(static):全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域,未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域。程序結束后由系統自動釋放。?
- (4)文字常量區:常量字符串就是存放在這里的。?
- (5)程序代碼區:存放函數體的二進制代碼。

例如:

int a=0; //全局初始化區 char *p1; //全局未初始化區 void main() {int b; //棧char s[]="abc"; //棧char *p3= "1234567"; //在文字常量區static int c =0 ; //靜態初始化區p1= (char *)malloc(10); //堆區strcpy(p1,"123456"); //"123456"放在常量區 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

? ? ? ?所以堆和棧的區別:?
- stack的空間由操作系統自動分配/釋放,heap上的空間手動分配/釋放。?
- stack的空間有限,heap是很大的自由存儲區。?
- 程序在編譯期和函數分配內存都是在棧上進行,且程序運行中函數調用時參數的傳遞也是在棧上進行。

? ? ? ?顯然 Cortex-m3資料可知:__initial_sp是堆棧指針,它就是FLASH的0x8000000地址前面4個字節(它根據堆棧大小,由編譯器自動生成)?
顯然堆和棧是相鄰的。

堆和棧空間分配:?
- 棧:向低地址擴展?
- 堆:向高地址擴展

? ? ? ?顯然如果依次定義變量,先定義的棧變量的內存地址比后定義的棧變量的內存地址要大,先定義的堆變量的內存地址比后定義的堆變量的內存地址要小。

堆和棧變量:?
- 棧:臨時變量,退出該作用域就會自動釋放?
- 堆:malloc變量,通過free函數釋放

寫程序時應該注意:?
1. 所以最好是不要調用太深。?
2. 局部變量不要太大太多,如局部數組,超過某個數量需定義為全局數組,因為局部數組同樣儲存在堆棧中。

總結

以上是生活随笔為你收集整理的再次理解STM32中的堆栈机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男女午夜爽爽爽 | 欧美中文网 | 91片黄在线观看 | 久操色| 久久影视一区二区 | 久久亚洲日本 | 午夜剧场免费在线观看 | 亚洲AV成人无码网站天堂久久 | 天天干人人 | 国产一区二区在线免费观看 | 中文字幕第一页在线视频 | 久久一二三区 | 中文有码视频 | 中文字幕观看在线 | 亚洲国产黄色 | 欧美激情在线狂野欧美精品 | 视频区小说区图片区 | 中文字幕第一页在线视频 | 伊人久久精品一区二区三区 | 国产香蕉视频在线 | 久久久久久久久久久久91 | 91精品国产综合久久香蕉 | 国产视频一区二区在线观看 | 久久黄色网 | 欧美一级视频免费观看 | 中文字幕一级二级三级 | 人与动物毛片 | 黄色一级大片在线免费看国产一 | 澳门黄色| 欧美日比视频 | 97精品熟女少妇一区二区三区 | 欧洲激情网 | 一区久久 | 国产精品无码久久久久久 | 国产一级一级国产 | 日本一级黄色录像 | 日韩欧美a级片 | 久久国产精品久久久久久 | 免费观看nba乐趣影院 | 午夜视频在线观看一区二区 | 91爱看| 欧美午夜久久 | 草草影院地址 | 成人av入口 | 亚洲黄色小视频 | 校园春色中文字幕 | 日韩日韩 | 牛人盗摄一区二区三区视频 | 久久久青草 | 久久婷婷热 | 在线激情 | 波多野结衣在线看 | 18黄暴禁片在线观看 | 美国美女黄色片 | 亚洲天堂三级 | 国产一区二区三区四区五区六区 | 亚洲自拍偷拍精品视频 | 国产在线国偷精品免费看 | 综合图区亚洲 | 污污网站免费在线观看 | 成人动态视频 | 亚洲欧美久久久 | 亚洲欧美综合一区二区 | 中文字幕一区二区三区在线视频 | 91娇羞白丝网站 | www.亚洲天堂 | 福利国产在线 | 91人人澡人人爽 | 日本一区二区高清不卡 | 国产在线xxxx| 亚洲深夜av | 在线观看av网站 | 动漫av一区二区三区 | 成人精品| 色图自拍| 国产一区二区成人 | 黄色片久久 | 少妇人禽zoz0伦视频 | 波多野结衣久久 | 欧美草b | 欧美高清在线一区 | 浪浪视频污 | 黄色av影视| 成年人在线观看视频免费 | 青青草原在线免费 | 特大黑人娇小亚洲女 | 天天干天天插天天射 | 国产色片在线观看 | 99在线播放 | 成人黄色国产 | 与亲女洗澡时伦了毛片 | 欧美黄色特级片 | 中文字幕第一页在线播放 | 99这里都是精品 | c逼视频| 亚洲自拍av在线 | www.九九九 | 女主播在线观看 | 日本不卡一区二区在线观看 |