AFAIK,有两种类型的全局变量,初始化和非初始化.它们是如何存储的?它们都存储在可执行文件中吗?我可以想到初始化的全局变量的初始值存储在可执行文件中.但是对于未初始化的人需要存储什么?
我目前的理解是这样的:
可执行文件被组织为多个部分,例如.text,.data和.bss.代码存储在.text部分中,初始化的全局或静态数据存储在.data部分中,未初始化的全局或静态数据存储在.bss部分中.
感谢您抽出宝贵时间查看我的问题.
我在这里找到一个很好的参考:
汇编语言源中的段 - 使用.text,.data和.bss指令构建文本和数据段
@迈克尔
我在汇编代码中定义了一个100字节的未初始化数据区域,这个100字节没有存储在我的可执行文件中,因为它未初始化.
谁将在RAM中分配100字节的未初始化内存空间?该程序加载器?
假设我得到以下代码:
int global[100];
void main(void)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
全局[100]未初始化.如何在我的可执行文件中重新编码全局[100]?谁会在什么时候分配它?如果它被初始化怎么办?