- 栈区(stack area): 由编译器管理内存的申请和释放, 一般来说函数的局部变量、函数形参都存放在栈区
- 堆区(heap area): 由程序员管理, 需要手动释放内存.
- 自由存储区: 用 new 操作符申请的内存均存储在自由存储区
- 全局数据区: 由静态区和常量区组成
- 静态区:存放静态变量
- 常量区: 存储常量
- 代码区: 存放程序的二进制代码.
- 在栈与堆之间有部分动态分配的姑且称之为共享区,叫法可能不一样

参考:浅谈c++内存布局
0.1 追问:自由存储区与堆区有什么区别?
malloc在堆上分配的内存块,使用free释放内存,而new所申请的内存则是在自由存储区上,使用delete来释放。
0.2 追问:自由存储区与堆区是两块不同的内存区域吗?
- 自由存储是C++中通过new与delete动态分配和释放对象的抽象概念,而堆(heap)是C语言和操作系统的术语,是操作系统维护的一块动态分配内存。
- new所申请的内存区域在C++中称为自由存储区。藉由堆实现的自由存储,可以说new所申请的内存区域在堆上。
因此堆与自由存储区还是有区别的,它们并非等价。
