您的位置 首页 硬件

stm32 仓库分配

1堆和栈大小定义大小在startup_stm32f2xxsStack_SizeEQU0x00000400AREASTACK,NOINIT,READWRITE,ALIGN=3Stack_MemSPACE

1.堆和栈巨细

界说巨细在startup_stm32f2xx.s

Stack_SizeEQU0x00000400

AREASTACK, NOINIT, READWRITE, ALIGN=3
Stack_MemSPACEStack_Size
__initial_sp

; Heap Configuration
;Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
;

Heap_SizeEQU0x00000200

AREAHEAP, NOINIT, READWRITE, ALIGN=3
__heap_base

2.堆和栈方位

经过MAP文件可知

HEAP0x200106f8Section512startup_stm32f2xx.o(HEAP)
STACK0x200108f8Section1024startup_stm32f2xx.o(STACK)

__heap_base0x200106f8Data0startup_stm32f2xx.o(HEAP)
__heap_limit0x200108f8Data0startup_stm32f2xx.o(HEAP)
__initial_sp0x20010cf8Data0startup_stm32f2xx.o(STACK)

明显Cortex-m3材料可知:__initial_sp是仓库指针,它便是FLASH的0x8000000地址前面4个字节(它依据仓库巨细,由编译器主动生成)

明显堆和栈是相邻的。

3.堆和栈空间分配

栈:向低地址扩展

堆:向高地址扩展

明显假如顺次界说变量

先界说的栈变量的内存地址比后界说的栈变量的内存地址要大

先界说的堆变量的内存地址比后界说的堆变量的内存地址要小

4.堆和栈变量

栈:暂时变量,退出该效果域就会主动开释

堆:malloc变量,经过free函数开释

别的:仓库溢出,编译不会提示,需求留意

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/256015.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部