C++核心编程--1 内存分区模型
C++程序执行时,内存可以划分为4部分
-
代码区:存放函数体的二进制代码
-
全局区:存放全局变量、静态变量、常量
-
栈区:局部变量、函数参数值,编译器自动分配和释放
-
堆区:程序员自己分配和释放
1.1 程序运行前
程序运行前,内存分为两块:
代码区:
- 存放cpu执行的机器指令
- 代码区共享,对于频繁被执行的程序,内存中只需要存一份
- 代码区只读,防止意外修改
全局区:
- 存放全局变量和静态变量、常量
1.2 程序运行后
栈区:
- 函数形参放在栈区
- 不要返回局部变量的地址,因为函数结束后系统将自动释放局部变量
堆区:
- 程序员通过new在堆区分配内存,使用delete释放内存
(1)指针变量:
int * var = new int(10);
delete var;
(2)指针数组:
int * arr = new int[10];
delete[] arr;