计算机中的存储段类型
计算机中的存储管理中有三个数据段: 代码段(.text)、数据段(.data)以及BSS段(.bss).
这里首先区分一下.data与.bss,两个段存放的都是数据,区别是data段中的数据是带有初始化的,所以运行前其在代码段中的存储要包括段的大小以及初始化值,而bss段中的数据是不带有初始化值的,所以其在运行前在代码段中只包含段的大小信息,故未初始化的变量如果定义多了,代码会很小(其实仔细想想这是一句废话,变量不初始化,代码段中就不包含初始化信息,代码自然就小了).
note:其实仔细想想,编译器这样做是有一定的道理的。如果只用bss的话,有时候我们需要在变量中放入一些非常重要的初始化数据。如果我们都是用data段的话,本来一些不需要初始化的变量都要被迫地初始化一些值,这是对程序存储空间的浪费。
这里首先区分一下.data与.bss,两个段存放的都是数据,区别是data段中的数据是带有初始化的,所以运行前其在代码段中的存储要包括段的大小以及初始化值,而bss段中的数据是不带有初始化值的,所以其在运行前在代码段中只包含段的大小信息,故未初始化的变量如果定义多了,代码会很小(其实仔细想想这是一句废话,变量不初始化,代码段中就不包含初始化信息,代码自然就小了).
note:其实仔细想想,编译器这样做是有一定的道理的。如果只用bss的话,有时候我们需要在变量中放入一些非常重要的初始化数据。如果我们都是用data段的话,本来一些不需要初始化的变量都要被迫地初始化一些值,这是对程序存储空间的浪费。
Comments
Post a Comment