C++_内存分配问题(内存四区)


前言

在运行程序之前或者在运行程序的时候,变量和函数会在哪种类型的内存空间存储。


一、为什么要划分内存四区

 设置不同区域存放的内存,赋予内存不同的生命周期,给我们更大的灵活编成。

总结:为了管理变量的生死

二、内存分类

1.代码区

 1.在程序运行之前便存在

 系统经过编译之后,便生成可执行程序,为.exe的文件,未执行程序之前便生成该区域

 2.存储的内容为机械指令

 3.代码区是共享并且只读的

 共享的目的是为了节省空间,通过只存一份代码,在执行代码的时候总是读取这一份代码便可以了,不需要每一次按都自己生成一份新的东西运行。
共享:就是硬盘里面存的.exe文件,在点击之后跳转到代码区运行
 只读的目的是为了方式篡改源码,对于源码来说,无论是那种语言,都步推荐修改源码。

2.全局区

 1.在程序运行时(或者说之前)便存在

 在执行的时候,首先为全局变量分配内存空间

 2.存在的内容

 常量区,字符串常量和其他常量(const修饰)。特别的局部常量不放在这里。

 3.生命周期固定,或者说该区域的数据由操作系统释放

3.栈区

 1.在程序运行后存在

 在分配完全局变量之后,便生成一个栈区,用来存放函数的参数值和局部变量
特别需要注意的一件事情:不能够返回局部变量的地址
因为编译器的能力,只允许读取一次局部变量的返回
返回局部变量时非法操作

3.堆区

 1.在程序运行后存在

 并不是每一个程序运行便存在的一个区域,当程序员生成的时候,才会由这个区的使用

 2.由程序员分配释放,如果程序员不是释放便在程序结束时释放。

 只分配不释放也是非法操作,程序的规范能避免很多的问题。


相对于栈区来说,就是能够返回堆区变量的地址(这个部分有关于指针的理解。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

所有的努力都是为了能更好的睡觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值