C++程序在执行时,将内存划分为四个区域。
#代码区:存放函数体的由二进制代码,由操作系统管理。
#全局区:存放全局变量和静态变量(static修饰的全局变量)以及常量。
#栈区:由编译器自动分配释放,存放函数参数值,局部变量等。
#堆区:由程序员分配和释放,程序结束时由操作系统收收回。C++主要用new开辟
意义:
#不同存放区域的数据,赋予不同生命周期,提高了编程的灵活性。
程序运行前:
在程序编译后,生成.exe可执行程序,未执行的程序分为两个区域。
#代码区:
存放CPU执行的机器指令;
代码区是共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可;
代码区是只读的目的是防止程序意外的修改了他的指令;
#全局区:
全局变量和静态变量存放在此;
全局区还包含了常量区,字符串常量和其他常量(const修饰的全局变量);
该区域的数据在程序结束后由操作系统释放;
程序运行后:
由编译器操作栈区;
注: 不要返回局部变量的地址,栈区开辟的数据由编译器自动释放;