变量在进程的虚拟地址空间布局

例子引开端

#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'

posted @ 2024-11-17 15:34  神秘的火柴人  阅读(7)  评论(0)    收藏  举报