map中三种内存
编译完工程会生成一个.map 的文件,该文件的最后说明了ROM和RAM占用空间大小,如下图所示:
其中ROM就是程序烧录到FLASH中的大小,RW就是占用RAM大小。
RO
RO (Read Only ): 只读区域, 需要长久保存,烧录到Flash中,下文的text段和constdata段属于此属性区。
RW
RW (Read Write): 可读可写,通常为全局变量和静态变量,下文中的.data段和.bss属于RW区。
ZI
ZI (Zero Init): 没有进行初始化或者初始化为0,系统上电时会主动把此区域数据进行0初始化,下文的.bss段就是。另外, 可翻看Keil工具编译的map文件,Heap和Stack区也进行了Zero的属性标注, 因此,Heap和Stack也可认为是ZI区域。
ROM与RAM数据比较
数据段 | 说明 | RAM | ROM |
---|---|---|---|
.bss | -- | true | false |
.data | true | true | |
RO-data | 常量 | false | true |
.text | -- | false | true |
stack | 局部变量等 | true | false |
heap | malloc | true | false |
审核编辑 黄昊宇
全部0条评论
快来发表一下你的评论吧 !