linux内存模型

局部变量,全局变量,静态局部变量,静态全局变量的区别就是在内存中的存储位置不同
局部变量在栈区
全局变量,静态局部变量,静态全局变量在数据区(包括bss,data,rodata)

在32位linux系统中,一个进程的内存可以按以下分类,windows也类似。

在这里插入图片描述
ELF文件头:表示文件的必要信息,开发不重要
————————————————————————————————————
ro和rw区分别为只读区和可读可写区
ro(只读)区包括rodata和text区

  1. rodata存储常量,例如字符串常量
  2. text就是代码存储区

rw(可读可写)区包括bss和data区

  1. 全局初始化数据区/静态数据区(data段)
    该区域包括了程序中明确被初始化的全局变量,已经初始化的静态变量(包括全局静态变量和局部静态变量)
  2. 未初始化数据区(bss段)
    存入的是全局未初始化变量和未初始化静态变量。未初始化数据区的数据在程序开始执行前被内核初始化为0或者NULL

ro区和rw区均在可执行程序生成时就已经固定,它们的地址不会再改变。它们的生命周期为程序开始到结束
————————————————————————————————————————————

栈区:程序执行时加载的区域,也就是加载局部变量的区域。空间小。
32为系统默认只有!M,32位linux可以扩展到16M,32位windows可以扩展到10M,

堆区:空间大,需要指针进行寻址。

————————————————————————————————————————————

共享库加载区:加载共享库的位置。
————————————————————————————————————————————
我创建了个qq群,里面有各种关于C++的问题与资料,
qq:361863861

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值