应用程序中内存分配概要

目录

###内存分配区域
​ 在计算机中,每一个应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同:

1. 栈区
 2. 堆区
 3. 全局区、静态区
 4. 常量区
 5. 代码区

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

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

另外还有两块很重要的内存分配区域:

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

========================

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

本作品采用 署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5)协议 进行许可,欢迎转载,但转载请注明来自SarielTang,并保持转载后文章内容的完整。本人保留所有版权相关权利。

本文永久链接:http://sarieltang.github.io/2015/04/27/知识点小结/2015-04-27/index/