C++程序在执行时,将内存大方向划分为4个区域
- 代码区:存放函数体的二进制代码,由操作系统进行管理的
- 全局区:存放全局变量和静态变量以及常量
- 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等
- 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
四区的生命周期
程序运行前:经过编译后未执行程序,此时主要是代码区和全局区
- 代码区:存放机器码,即编译后生成的二进制或者十六进制的文件,代码区是共享的只读。
- 全局区:包含全局变量、静态变量和常量。
程序运行后:栈区和堆区
- 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等。
- 堆区:由程序员分配释放,若程序员不释放,程序结束时由操作系统回收在C++中主要利用new在堆区开辟内存。特别主要:堆区空间在开辟后需要及时使用delete删除,否则会造成内存泄漏问题。