内存理解

image

image

C和C++编译器把内存分为三块:基栈、浮动栈、堆:

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

image

image

原文地址:https://www.cnblogs.com/heidsoft/p/3428580.html