的疑问:
如果我们执行程序,以下是分配给该程序的内存类型。
image.transform = CGAffineTransformMakeScale(0.01, 0.01)
UIView.animateWithDuration(1.0, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
self.image.transform = CGAffineTransformIdentity
}) { (finished) -> Void in
}
这里的数据部分起着至关重要的作用。所有初始化数据和未初始化数据都存在于数据段中。但是,我不知道在数据段中存储数据的顺序。对于Ex,初始化数据,未初始化数据,只读和读写数据。我认为以上是数据段中存在的四种类型。
所以,数据的顺序将放在数据段中。像第一个初始化数据一样,地址少于全部。接下来是未初始化的数据,其地址高于初始化数据。
先谢谢。
答案 0 :(得分:0)
无法事先确定数据段中全局变量的顺序 - 这取决于您的链接器和编译器。通常链接器保留变量在链接目标文件中出现的顺序,但这不是一个硬性要求(例如,链接器可以先放置double
个变量,最后放置char
以保存所需的对齐字节)。
未初始化的全局数据通常出现在.bss
段中,该段位于.data
段之后(在您的图片中,“高于”它,因为图片的较高部分=较大的地址)。 .bss
段全部为零,只有其大小存储在可执行文件中。这样,我们就不需要在二进制图像中存储长的零字符串。