内存的五个分区
来源:互联网 发布:网络信息点测试 编辑:程序博客网 时间:2024/05/17 09:17
内存包括5个区域:
1.栈区
系统分配以及回收内存,函数体内创建的变量分配在栈区。
例如:
int main()
{
int a = 10;
int b = 2;
}
a存在内存的栈区,系统分配了一个四个字节的空间,里面存放了一个数字10,出了这个大括号,系统就会回收a所占的内存空间,同理b也是在栈区。
2.堆区(动态内存分配)
由用户(程序员)分配回收,如果忘记回收,那么就会造成内存泄露,内存越用越少,有可能导致内存不够用,造成系统崩溃,如果没有达到极限,程序还是会没事,当程序退出时系统会来回收一次。
申请内存时用malloc来申请, 申请后要用free来释放掉
3.常量区
用来存放常量的内存区域
int main()
{
int a = 10;
int b = 2;
}
10 和2 存在常量区, a = 10中栈区的10是由常量区中的10拷贝过来的,也就是有两个10,常量区中存放的一般是数值,字符和字符串。4.全局静态区
定义在函数体外面的变量,由系统开辟空间,程序运行过程中一直存在,直到系统退出
int x = 8;
int main()
{
int a = 10;
int b = 2;
}
在函数外面定义的x就是存在全局静态区的,它的生命周期随着程序打开就开始分配存在,在程序退出时结束,这里的x = 8,8也是从常量区拷过来的 ,像所学的oc里的类就是存在全局静态区的。
5.代码区
存放源代码编译结果的区域
我们平时写的代码是源代码,例如 int a = 10; 源代码计算机是读不懂的,计算机只能读懂二进制,由0 和1 组成的序列。我们要对源代码进行编译,编译成二进制文件,如果是Windows系统运行会生成.exe文件, 如果是mac系统就会生成.app文件, 我们所写的所有函数编译成二进制之后就放在代码区。
0 0
- 内存的五个分区
- C++五个内存分区 详解~
- 程序的内存分区
- 内存的分区
- c++内存的分区
- 五个不可与根目录放在不同分区的目录
- Android内存回收的五个优先级(译)
- C语言 内存的五个区域
- 正确的C++内存分区
- 内存的5个分区
- 应用程序中内存的分区
- 内存的五大分区
- C程序的内存分区
- C 语言的内存分区
- java虚拟机的内存分区
- 内存管理的概念和内存分区...
- 内存管理的概念和内存分区
- 内存分区
- Deepsec 2014 - Memory Forensics And Security Analytics - Detecting Unknown Malware
- python文件操作
- android:installLocation简析
- linux debian 列出所有模块
- 如何制作NGUI字体集
- 内存的五个分区
- About Folders, Directories, and Pathnames
- pat1070 Mooncake
- mybatis防止sql注入
- c++ 试题
- Rotate Array (Java)
- Android里merge和include标签的使用
- Fragment 类相关小知识
- CodeForces 204A Little Elephant and Interval