一、说明
在内存很受限的嵌入式系统中作开发时,经常会出现内存超标了,在这种情况下,就需要对ARM中RO,RW和ZI区段分别存放什么数据有深入的理解。
一般来说一个ARM程序包含3部分:RO,RW和ZI区段。
RO是程序中的指令和常量,RW是程序中的已初始化变量,ZI是程序中的未初始化的变量。
由以上3点说明可以理解为:
RO就是readonly,RW就是read/write,ZI就是zero。
二、使用
1、RO Data
所有指令编译后的数据是属于RO Data区段的。
对于使用const定义的基本数据类型以及结构(这里并不包括class)都是属于RO Data区段,定义在一个class外或者定义在class内部都是如此。
如定义在class外:
const int age= 6;
typedef struct
{
char name[20];
int age;
int birth;
}struct_person;
const struct_person st_per[2] = { {"name1", age1, birth1}, {"name2", age2, birth2}};
如定义在class中:
class A
{
private:
const static struct_person st_per[2];
};
const struct_person A::st_per[2] = {"name1", age1, birth1}, {"name2", age2, birth2}};
在如上的代码中,age,st_per的