C语言生成的段大致分为两大类:初始化和未初始化,已初始化的段含有真正的指令和数据,未初始化段只是保留变量的地址空间。已初始化段:.text——C语言编译生成的汇编指令代码存放于此.cinit——存放初始化的全局和静态变量.const——字符串常量和const定义的全局和静态变量.econst——字符串常量和far const定义的全局和静态变量.print——全局构造器(C++)程序列表.switch——存放switch语句产生的常数表格以.const段为例:const int a = 10; //注意必须是全局的 如果声明为局部const初始化变量,不会放在.const段,局部变量都是运行时放在.bss段中
char * p = "ABC";
数组和结构体的初始值——是局部变量时,产生的是.const,如果是全局变量,产生的是.cinit未初始化段:.bss——为全局变量和局部变量保留的空间,程序上电时,.cinit空间中的数据复制出来并存放在.bss空间中.ebss——为使用大寄存器模式时预留的全局和局部变量空间,程序上电时,.cinit空间中的数据复制出来并存放在.bss空间中.stack——堆栈空间,主要用于函数传递变量或为局部变量分配空间.system——为动态存储分配保留的空间(malloc),如果有宏函数,此空间被占用.esystem——为动态存储分配保留的空间(far malloc),如果有far函数,此空间会被占用