zhouqijie

程序基本内存布局

代码段 – 存放程序的二进制代码
数据段 – 存放常量、全局变量、静态变量
栈区 – 存放局部变量(自动分配和释放)
堆区 – 动态分配的空间(手动分配和释放)

栈区





数据段

常量、全局变量、静态变量都存放在程序数据段。

  1. CRE:static无论是在函数体内还是作为类成员都是全局的。(static成员需要类外初始化)
  2. CRE:const成员在不同对象中的值不一样。但是static成员在不同对象的值是一样的。





字符串内存布局





数组内存布局

CRE:数组即指针。
CRE:结构体或者类中声明定长数组,会计算入类的size(和声明指针不一样)。





结构体内存布局





类的内存布局

注意有些对象的size在Debug和Release下不一样,例如vector在Debug下为16字节而在Release下为12字节。
组合的成员对象先调用构造函数、后调用析构函数。

(END)