应用程序中内存分配概要

来源:互联网 发布:程序员新工作第一天 编辑:程序博客网 时间:2024/06/06 12:45

内存分配区域

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

内存加载顺序

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

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

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

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

0 0
原创粉丝点击