一.各分区功能
代码区:存放函数的二进制代码,由操作系统管理。
全局区:存放全局变量和静态变量以及常量。
栈 区:存放函数的参数和局部变量等,由编译器自动释放。
堆 区:由程序员分配和释放,若不释放,执行完成后会自动释放
二.各分区特点
代码区:
代码区是共享的,对于执行的程序,只需要一份即可。
代码区是只读的,防止使用时改变它的指令。
全局区:
存放全局变量和静态变量以及常量。
栈区:
注意不要返回局部变量的地址,因为它执行完函数后,编译器会自动释放内存,导致原局部变量地址错误。
堆区:
利用new关键字开辟到堆区。
int *p = new int (10);
堆区由程序员管理,手动开辟和手动释放。
扩展:new关键字主要是返回该数据对应类型的指针。
例:int *p = new int (10);
int *arr=new int [10] ;
string* str = new string("Hello, World!");
三.内存分区的意义
不同区域存放不同的数据,赋予不同的生命周期,给我们更大的灵活编程。