C++核心编程
1. 内存分区模型
程序运行前
在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域
代码区:
- 存放CPU执行的机器指令
- 代码区时共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可
- 代码区时只读的,使其只读的原因是防止程序意外地修改了它的指令
全局区
- 全局变量和静态变量存放在此
- 全局区还包含了常量区,字符串常量和其他常量也存放在此
- 该区域的数据在程序结束后由操作系统释放
总结:
- C++中在程序运行前分为全局区和代码区
- 代码区特点是共享和只读
- 全局区中存放全局变量、静态变量、常量
- 常量区中存放const修饰的全局变量和字符串常量
程序运行后
栈区存放的数据:局部变量,形参。
释放堆区数组要加中括号delete[]数组名
NEW操作符
C++中利用new操作符在堆区开辟数据
堆区开辟的数据,由程序员开辟,手动释放,释放利用操作符delete
语法:new数据类型
利用new创建的数据,会返回该数据对应的类型的指针(及返回的是地址)
如果用的是小括号()指创建一个变量,如果是中括号[]指创建了一个数组。