怀疑:
如果我们执行一个程序,则以下是分配给该程序的内存类型。
__________________
| |
| stack |
| |
------------------
| |
| <Un Allocated|
| space> |
------------------
| |
| |
| Heap |
| |
| |
__________________
| |
| data |
__________________
| text |
__________________
数据段在这里起着至关重要的作用。所有初始化数据和未初始化数据都存在于数据段中。但是,我不知道在数据段中存储数据的顺序。对于Ex,初始化数据,未初始化数据,只读和读写数据。我认为以上是数据段中存在的四种类型。
因此,数据将以何种顺序放置在数据段中。像第一个初始化的数据,其地址少于所有。其次是未初始化的数据,其地址要比已初始化的数据高。
提前致谢。
最佳答案
数据段中全局变量的顺序无法预先确定-由链接器和编译器决定。通常,链接器保留变量在链接的目标文件中出现的顺序,但这并不是硬性要求(例如,链接器可以将double
变量放在首位,将char
放在最后,以节省所需的对齐字节)。
未初始化的全局数据通常存在于.bss
段中,该段位于.data
段之后(在您的图片中,位于“上方”,因为图片的较高部分=较大的地址)。 .bss
段全为零,并且只有其大小存储在可执行文件中。这样,我们不需要在二进制图像中存储零的长字符串。