C++中的内存分区只要有以下几种:
(1)栈存储区:主要存储像局部变量、函数参数这些值,栈内存由编译器在需要时分配,使用完时自动释放。
栈内存的分配运算内置在指令集中,因此分配效率高,但是内存容量却有限。
栈内存主要存储定义在函数内的非static对象。
(2)堆存储区:又称为动态内存存储区。这里要用new申请内存块,需要用delete释放。
如果程序员不释放申请到的内存,程序运行结束后操作系统会自动回收。
动态内存生存期灵活,但是伴随着申请释放内存也容易出现问题。
(3)自由存储区:和堆存储区类似,只是这里内存是用malloc申请,由free释放的。
(4)全局和静态存储区:存储程序中全局变量和静态变量的区域。
此处的内存在程序编译时已经分配好,它存在于程序整个的生命周期。
(5)常量存储区:用来存储程序中常量的内存区域。