程序中数据存放的位置及特性

来源:互联网 发布:茵宝淘宝旗舰店怎么样 编辑:程序博客网 时间:2024/05/22 15:40

1.未初始化的全局变量(bss段)

bss段是用来存放那些没有初始化的和初始化为0的全局变量。(全局变量在整个程序的运行周期内,bss数据一直存在。bss类型的全局变量只占运行时的内存空间,而不占用文件空间)

如:

 

由于data_array是未初始化的全局变量,存放在bss段,所以该文件的大小不超过4M。

 

2.初始化过的全局变量(data段)

data段用来存放那些初始化为非零的全局变量。(data类型的全局变量即占用文件空间,又占用运行时内存空间。)

 

上面的代码中的全局变量已被初始化为非零值,文件就变成4M多了。

 

 

  

上面的代码由于全局变量被初始化为0,因编译器优化的原因,被存放在bss段。

 

 

3.常量数据(rodata段)

用来存放常量数据。

对于字符串常量,编译器会自动去掉重复的字符串,保证一个字符串在一个可执行文件中只存在一份拷贝。

rodata是多个进程间共享的,提高空间的利用率。

 

4.代码段(text段)

这个段是可以执行的,用来存放代码。

 

5.栈(stack)

用来存放临时变量和函数参数。

 

6.堆(heap)

堆的生命周期完全由使用者控制。

原创粉丝点击