C++内存分区
参考
https://www.bilibili.com/video/av41559729?p=84
https://www.bilibili.com/video/av41559729?p=85
https://www.bilibili.com/video/av41559729?p=86
C++程序在执行时,将内存大方向划分为4个区域
- 代码区
程序运行前分配的内存
存放CPU执行的机器指令(代码对应的二进制文件)
代码区是共享的,共享的目的是对于需要被频繁执行的程序,在内存中只需要一份代码即可
代码区是只读的,防止修改 - 全局区
程序运行前分配的内存
存放的是全局变量、静态变量(static修饰的变量)、常量
常量包括字符串以及全局常量(const修饰的全局变量),局部常量(const修饰的局部变量)不存放在全局区而是在栈区
该区域的数据在程序结束后由操作系统释放 - 栈区
程序运行后分配的内存
存放函数的参数值、局部变量等
由编译器分配与释放
注意:函数不要返回局部变量的地址 - 堆区
程序运行后分配的内存
new关键字开辟的内存
由程序员管理分配与释放,若不释放,程序结束后由操作系统释放