freertos內存pvPortMalloc 和 malloc 區別 ,以及全局變量占用情況


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.全局變量的占用

  1. 定義未初始化未使用 : 不占空間
char a[1000];
int main()
{
  
}
  1. 定義未初始化並使用: 占用ZI-Data
char a[1000];
int main()
{
  memset(a, 0, sizeof(a));
}
  1. 定義初始化: 不管用不用,都占用RW-Data
char a[1000] = "hello";
int main()
{
  //memset(a, 0, sizeof(a));
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM