用keil編譯程序后會打印對應的內存分配信息(單位:B 1024B=1KB)
Program Size: Code=10304 RO-data=508 RW-data=92 ZI-data=9828
Total RO Size (Code + RO Data) 10812 ( 10.5 kB)
Total RW(RAM) Size (RW Data + ZI Data) 9920 ( 9.68 kB)
Total ROM(Flash) Size (Code + RO Data + RW Data) 10904 ( 10.6 kB)
(1)Code中不僅僅包含了代碼的大小。其中還包括了inline data(內聯數據),比如literal pools(文字池)和short strings(短字符串)。
(2)RO-data: 表示程序中的只讀常量數據。比如const類型的數據 (除inline data之外的只讀數據)。
(3)RW-data: 表示可讀寫變量的大小,也就是說是程序中已經初始化的變量大小。
(4)ZI-data: 表示程序中未初始化的變量大小。就是程序中已經定義但是初始化值為0或者
是沒有初始化賦值的變量(編譯器會默認把沒有賦值的變量自動賦值為0)。
下面對幾個數值的關系進行說明
RAM size: 程序運行時所需要的大小空間為 RW-data+ ZI-data
ROM(FLASH) size: 也就是下載到單片機FLASH中的數據為 Code +RO-data +RW-data 和的大小。
為什么不把ZI-data 也下載進去呢? 其實是沒有必要的,這是浪費空間,只要程序一上電運
行就會把ZI-data 自動清0。