应用程序中内存分配概要

内存分配区域

在计算机中,每一个应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同:
1. 栈区
2. 堆区
3. 全局区、静态区
4. 常量区
5. 代码区

内存加载顺序

当一个应用程序首次启动时,首先会加载代码,也就是我们编写的机器码,将他们加载到代码区中;
==>加载常量
==>加载全局区/静态区已初始化的内容;
==>加载全局区/静态区中的未初始化的内容。
以上这些内容,随着程序启动,被加载到内存,随着程序被销毁,才会一起被销毁,程序员不需要管理这部分内存。

注意,
由于全局区、静态区中的内容在整个程序的生命周期中,会一直存在在内存中,占用内存,所以我们在开发中要尽量少用全局/静态变量

另外还有两块很重要的内存分配区域:
1. 栈区(stack) 由编译器自动分配并释放,一般存放函数的参数值,局部变量等.
- 栈区中的地址是从上往下分配,最先分配的变量在最顶部,也就是内存允许的最大值开始往下进行分配,越分配地址越小。
- 栈区的内存是先进后出的,一旦出了作用域就会被销毁,程序员不需要管理栈区变量的内存。

========================
2. 堆区(heap) 由程序员分配和释放,如果程序员不释放,程序结束时,可能会由操作系统回收

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值