这里主要针对stm32的启动文件里的heep_size
众所周知这个heep_size 是堆的大小的设置,比如stm32f030的默认值是
Heap_Size EQU 0x00000200
就是说堆大小默认512字节,而堆的话,如果不用操作系统或者C自带的内存管理函数(malloc啊 free啊啥的),其实没多大用
这样好多人包括我自己其实就想这里能不能设置成0得了,可以省出512字节RAM
事实证明,没必要,编译器比我们聪明,看看MDK编译过程中产生的map文件,其中有这么一句
Removing startup_stm32f030.o(HEAP), (512 bytes).
就是说编译器检测到我们并没有使用内存管理函数,所以自动把这部分RAM给省下来了,而且我当前的工程的编译优化是0,就是说这里移除HEAP占用RAM的操作是编译器默认的,并非优化选项。
我试了试把heep_size修改成其他大小,对编译后的RAM占用确实也没影响
所以这里咱们完全没必要去纠结heep_size的设置