在看过stm32f103的启动代码后发现,启动时为栈分配1KB的内存,堆分配512Byte内存。我个人认为1K的栈会不会太小了,于是在main函数拿了个数组试了一下,用STLink仿真。
1.arr数组长度为1024的时候发现sp指针指向了堆顶了,是不是说堆区和栈区是直接相连的呢?
2.arr数组长度为1024+512时,也就是初始化时堆和栈的总大小,此时sp指向了堆基,是不是说栈内存不够用的时候能占用堆区的内存呢?
3.arr数组长度为1024+512+328时(328为堆底减去0x20000000,也就是堆底相对SRAM起始地址之间还存在着328Byte的内存)此时SP指向了code末尾的地址,并且程序崩溃了。
如果平时使用数组的话,整形int类型数组长度为256就已经能把1K的栈用完,所以1k会不会优点小,求指点。
一周热门 更多>