
复习回顾欢迎友友指正一起进步~Flash与RAM的存储分布(Cortex-M).testFlash0x08000000代码段、中断向量表.rodataFlash只读数据const变量.dataFlash初值RAM运行时已初始化全局/静态变量.bssRAM(0x20000000)未初始化全局/静态变量static清零——帮.data负担“0”这类的大量的隐式变量Stack空间小、处理快RAM函数调用、局部变量都是执行结束后回收Heap~大、~慢RAM动态分配内存优先用栈堆存在泄露风险对象巨大例如2048*2048的图像单帧数据再考虑。非堆栈里的变量默认初值是零连接脚本.ld就是把各段的起始地址和大小定义startup代码在main之前将.data从Flash复制到RAM并将.bss清零。堆和栈都在 SRAM但具体地址由链接脚本决定。0x20000000 开始——0x20020000是 128KB SRAM 的结束地址里面然后栈是向下生长栈底是高地址SP 一开始指向0x20020000压栈SP 向低地址移动所以 PSP 指针进程栈指针在栈底开始。栈是由寄存器SP 直接寻址堆是由操作系统 / 运行时库维护的一个空闲内存链表。