|
发表于 2025-2-27 09:29:09
|
显示全部楼层
keil 是你已经占用的堆内存(全局变量之类的)+ 你申明的栈大小(keil 配置页面设定)来做栈顶地址,不同工程全局变量数量不同,栈顶地址自然不同。
对于 keil,栈顶往上的内存是浪费的,除非你每次根据编译出来的 map 文件,计算浪费的内存大小是多少,然后修改栈申明的大小,相应加大。
很傻的要手动操作。
而 stm32cubemx 生成的 makefile + gcc 工程,栈固定设定在内存顶部,可以最大程度避免栈溢出。
其次,我一般会加一个简易的栈溢出检查,见下图。
不加检查溢出直接死机倒还好,如果出一些内存错乱的奇怪问题,查起来就费事了。
|
评分
-
1
查看全部评分
-
|