目录
###内存分配区域
在计算机中,每一个应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同:
1. 栈区
2. 堆区
3. 全局区、静态区
4. 常量区
5. 代码区
###内存加载顺序
当一个应用程序首次启动时,首先会加载代码
,也就是我们编写的机器码,将他们加载到代码区
中;
==>加载常量
;
==>加载全局区/静态区
中已初始化
的内容;
==>加载全局区/静态区
中的未初始化
的内容。
以上这些内容,随着程序启动,被加载到内存,随着程序被销毁,才会一起被销毁,程序员不需要管理这部分内存。
注意,
由于全局区、静态区中的内容在整个程序的生命周期中,会一直存在在内存中,占用内存,所以我们在开发中要尽量少用全局/静态变量
。
另外还有两块很重要的内存分配区域:
- 栈区(stack) 由编译器自动分配并释放,一般存放函数的参数值,局部变量等.
- 栈区中的地址是从上往下分配,最先分配的变量在最顶部,也就是内存允许的最大值开始往下进行分配,越分配地址越小。
- 栈区的内存是先进后出的,一旦出了作用域就会被销毁,程序员不需要管理栈区变量的内存。
========================
- 堆区(heap) 由程序员分配和释放,如果程序员不释放,程序结束时,可能会由操作系统回收
本作品采用 署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5)协议
进行许可,欢迎转载,但转载请注明来自SarielTang
,并保持转载后文章内容的完整。本人保留所有版权相关权利。
本文永久链接:http://sarieltang.github.io/2015/04/27/知识点小结/2015-04-27/index/