使用stm32f103vct6 官方信息显示SRAM大小48K,实际使用发现其大小为64K
Stack_Size EQU 0x00004000 //栈大小为16K
Heap_Size EQU 0x00003000 //堆大小为12K
栈范围 0x2000C000--0x2000FFFF 共16K
堆范围 0x20009000--0x2000BFFF 共12K
静态区 0x20000000--0x20008FFF 共36K
SRAM内存布局如下
------top------------0x2000FFFF
------stack----------0x2000C000
------heap-----------0x20009000
------static---------0x20000000
局部变量存储在栈中,局部变量入栈,先入栈的数据存储在栈的高地址。后入栈的数据存储在栈的低地址。
{
u8 cTemp[10] = {0};
u8 cTemp1[10] = {0};
}
cTemp先入栈,存储在高地址,接着cTemp1入栈,紧挨着cTemp存储
对于cTemp而言,cTemp[0]存储在低地址,cTemp[9]存储在高地址
malloc的内容存储在堆空间,使用完之后要手动free掉。
全局变量以及static静态变量存储在静态区