陕西电商网站建设,安徽公共资源交易中心,wordpress+药品食品,网站建设联盟目录
图示
详解
代码段 备注#xff1a;x86 32位linux环境下#xff0c;进程虚拟地址空间区域划分
图示 详解
用户空间 用于存储用户进程代码和数据#xff0c;只能由用户进程访问 内核空间 用于存储操作系统内核代码和数据#xff0c;只能由操作系统内核访问 text t…目录
图示
详解
代码段 备注x86 32位linux环境下进程虚拟地址空间区域划分
图示 详解
用户空间 用于存储用户进程代码和数据只能由用户进程访问 内核空间 用于存储操作系统内核代码和数据只能由操作系统内核访问 text text也称为只读代码段用于存放程序的机器指令 这个区域通常是只读的以防止程序修改自身的指令 rodata rodata区域是只读数据区域read-only data segment的简称 在程序运行时该区域存储只读的常量数据如字符串常量和全局常量变量 这些数据在程序运行期间不可被修改 data data也称为已初始化数据段用于存放已经初始化成非0的全局变量和静态变量 bss bss是Block Started by Symbol的简称也称为未初始化数据段 用于存放未初始化的全局变量和静态变量 在程序加载时bss区域的值会被设置为0 heap 堆区用于动态分配内存程序员可以根据需要申请和释放内存 malloc()函数分配的内存位于堆区 共享库 用于存放共享库的代码和数据例如 *.dll *.so stack 栈采用先进后出的方式进行操作 栈用于函数调用开辟栈帧空间、局部变量的存储 每个函数调用时都会在栈上创建一个新的栈帧函数返回时将其销毁 代码段
#includeiostream
using namespace std;int gdata1 1; // data段
int gdata2 0; // bss段
int gdata3; // bss段static int gdata4 2; // data段
static int gdata5 0; // bss段
static int gdata6; // bss段int main()
{int a 3;// mov dword ptr[a], 03hint b 0;int c;// 以上三行代码在编译后产生的mov指令存放于text段// 指令运行后需在栈上开辟空间static int e 4; // data段static int f 0; // bss段static int g; // bss段return 0;
}