内存分区模型
- 代码区
存放我们所有编写的代码 - 全局区
存放全局变量,静态变量以及常量 - 栈区
由编译器自动分配释放,存放函数的参数值,局部变量等 - 堆区
由程序员分配和释放,程序结束时会自动回收未被释放的内存
代码区
该分区存放了代码转换而成的2进制cpu指令,且程序运行前即分配好,特点是共享且只可读
全局区
该分区同代码区一样,也在程序运行前就分配好,存放了全局变量和静态变量(可能是全局的,也可能是局部的),和常量区,常见的常量可由define或const声明,它最终会随着程序的运行结束而被释放掉
栈区
该分区由编译器自动分配释放,主要存放函数的参数值,局部变量等等,要注意不能返回局部变量的地址,因为栈区开辟的内存会随着程序运行编译器自动回收
堆区
该分区由程序员申请和释放,这里会使用到new和delete关键字,new可以申请内存空间,delete可以释放空间,注意点是程序运行结束时会自动回收已经申请的内存。
网友评论