对于一个标准C程序所用到的全局和静态变量都是定位在固定的内存空间,在程序启动时必须赋予确定的数值,对于程序中没有赋初值的变量,编译器默认赋值为0。对于__no_init限定的变量则不会被初始化。
对于一个标准的C程序中用到的变量类别如下 Categories of declared data 所示,
标准C程序中的全局和静态变量在启动时需要初始化。未明确赋值的变量默认初始化为0,而使用__no_init声明的变量不会被初始化。初始化过程涉及将变量按类型分配到不同的内存区域,如初始化为0的section存于RAM,.noinit部分不初始化。链接阶段,数据被分为初始化和非初始化的section,并分别处理。在ICF配置中,不同类型的变量会被放置在相应的内存区域。
对于一个标准C程序所用到的全局和静态变量都是定位在固定的内存空间,在程序启动时必须赋予确定的数值,对于程序中没有赋初值的变量,编译器默认赋值为0。对于__no_init限定的变量则不会被初始化。
对于一个标准的C程序中用到的变量类别如下 Categories of declared data 所示,
3481

被折叠的 条评论
为什么被折叠?