栈区,堆区,全局区,静态区,代码区,常量区,自由存储区
作者:互联网
C:内存基本上分为4部分:静态存储区、堆区、栈区以及常量区。
C++:内存分成5个区,分别是堆、栈、全局/静态存储区、常量存储区和代码区;
内存四区是指:栈区,堆区,全局区,代码区。
栈区:
- 编译器在需要时分配,不需要时自动清除变量的存储区。
- 局部变量、函数参数..主要用来存放方法中的参数,一些临时的局部变量;
- 由系统的编译器自动的释放。(方法中的参数一般在操作完后,会由编译器自动的释放掉)
堆区:
- 动态内存分配;
- 一般由程序员手动分配释放(动态内存申请与释放),若程序员不释放,程序结束时可能由操作系统回收;
- 主要用来存放我们动态创建的对象、动态的申请的临时空间;
- 用malloc或new申请任意内存,程序员自己负责在何处用free或delete释放内存。(生存期由程序员决定)
全局/静态存储区:
- 静态变量和全局变量的存储区域;
- 静态区的内存直到程序全部结束之后才会被释放。
代码区:
- 存放程序的编译后的可执行代码;
- 只读的CPU执行的机器指令,存放代码(不允许修改,但可以执行)。
常量存储区:
- 存放不允许修改的常量。
自由存储区:
- C++中通过new与delete动态分配和释放对象的抽象概念。
- 自由存储区和堆不是一个概念:自由存储区是指CRT(C运行时库)通过malloc,free函数管理的内存;堆特指通过new,delete管理的内存。
标签:栈区,释放,常量,静态,堆区,存储,内存 来源: https://www.cnblogs.com/siu-miner/p/16300661.html