1.FreeRtos占用內存
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) )
pvPortMalloc是從configTOTAL_HEAP_SIZE中申請內存,作為ZI-data被編譯。
malloc是直接從SRAM 堆 中申請內存,是和全局變量一個地位。
2.芯片占用情況
- RO-data是 Read Only 只讀常量的大小,如const型;
- RW-data是(Read Write) 初始化了的可讀寫變量的大小;
- ZI-data是(Zero Initialize) 沒有初始化的可讀寫變量的大小。ZI-data不會被算做代碼里因為不會被初始化;
FLASH:Code + RO-Data + RW-Data
SRAM: RW-Data + ZI-Data
3.全局變量的占用
- 定義未初始化未使用 : 不占空間
char a[1000];
int main()
{
}
- 定義未初始化並使用: 占用ZI-Data
char a[1000];
int main()
{
memset(a, 0, sizeof(a));
}
- 定義初始化: 不管用不用,都占用RW-Data
char a[1000] = "hello";
int main()
{
//memset(a, 0, sizeof(a));
}