![image image](https://images0.cnblogs.com/blog/72602/201311/17234348-f11257e47fdf46fc8169ee58ba120475.png)
![image image](https://images0.cnblogs.com/blog/72602/201311/17234350-a31cd9304f0f42c8939e954ad3ce4ba5.png)
C和C++编译器把内存分为三块:基栈、浮动栈、堆:
- 基栈:也叫静态存储区,这是编译器在编译期间就已经固定下来必须使用的内存,如程序的代码段、静态变量、全局变量、const常量等。程序一调入内存,至少就要占用这么多空间。有个不大精确的算法,exe文件有多大,差不多基栈就有多大。
- 浮动栈:很多书称为“栈”,就是程序开始运行,随着函数、对象的一段段执行,函数内部变量、对象的内部成员变量开始动态占用内存,浮动栈一般都有生命周期,函数结束或者对象析构,其对应的浮动栈空间就拆除了,这部分内容总是变来变去,内存占用也固定,因此叫浮动栈
- 堆:C语言和C++语言都支持动态内存申请,即程序在运行期可以自由申请内存,这部分内存就是在堆空间申请的。
![image image](https://images0.cnblogs.com/blog/72602/201311/17234032-30cb8a360bb6431d89b9d394853f09de.png)
![image image](https://images0.cnblogs.com/blog/72602/201311/17234353-beb6f74630f0416c9e7be3a6b2b76452.png)
![image image](https://images0.cnblogs.com/blog/72602/201311/17234356-0e80ee50058745a19d2c622f43498b63.png)