C/c++ sizeof函数

C/C++ sizeof()标准库类型和自定义类型

自定义类型

  1. 只计算数据成员的size返回他们的代数和,不计算函数成员(函数无法作为sizeof的参数)C/c++ sizeof函数
  2. 由于类需要实例化,当类内部无数据成员(或为空类)时,编译器会为其分配一个字节空间用于占位,返回1
    C/c++ sizeof函数
  3. 类的静态成员不参与计算
    C/c++ sizeof函数
  4. 数据成员参加计算时需要字节对齐,对齐准则与编译器有关,但一般满足以下准则
    C/c++ sizeof函数
  5. 若类内部有虚函数,编译器会自动为该类分配一个虚函数指针,所以隐含一个指针成员。但类内部有多个虚函数时也只会有一个虚函数指针
    C/c++ sizeof函数
    C/c++ sizeof函数

标准库内置类型(win32平台)

int -->4 ,short–>2,bool–>1,char–>1,float–>4,double–>8,所有指针类型均是4 (以上单位为字节)

STL模板库类型

array: 与存放数据类型的字节数乘以数据数(c风格数组也是)

C/c++ sizeof函数C/c++ sizeof函数C/c++ sizeof函数C/c++ sizeof函数

pair类型返回两元素宽度较大者的二倍

C/c++ sizeof函数

模板库其他类型返回值均与数据区存放的数据无关

list 返回8 ,set返回8,vector:返回12,sting:返回24
map,multimap和set,multiset返回8,
deque返回20,stack和queue是deque的适配器,也返回20,
unordered_set,unordered_multimap和unordered_set,unordered_multiset返回32;