变量在进程的虚拟地址空间布局
例子引开端
#include <iostream>
int g_a;
int g_b = 10;
int g_c = 0;
static int g_sa;
static int g_sb = 10;
static int g_sc = 0;
int main()
{
int l_a;
int l_b = 10;
int l_c = 0;
static int l_sa;
static int l_sb = 10;
static int l_sc = 0;
return 0;
}
进程虚拟地址空间布局
X86 32位
.text:存放指令
.rodata:存放只读变量,字符串常量 "Hello World"、const修饰的变量
.data:初始化
.bss:better save space,未初始化(包含定义时赋值为0),变量默认赋值为0
注意点
'int l_a;'语句在编译后会产生指令,放到'.text'上;在程序运行的时候,CPU执行这条指令的时候,会在栈上开辟空间存放'l_a'