sizeof

作者: yangqi916 | 来源:发表于2017-02-25 21:25 被阅读0次

许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐。

每个特定平台上的编译器都有自己的默认“对齐系数”(32位机一般为4,64位机一般为8)。我们可以通过预编译命令#pragma pack(k),k=1,2,4,8,16来改变这个系数,其中k就是需要指定的“对齐系数”;也可以使用#pragma pack()取消自定义字节对齐方式。

struct 或者 union 成员对齐规则如下:

  1. 第一个数据成员放在offset为0的地方,对齐按照对齐系数和自身占用字节数中,二者比较小的那个进行对齐;
  2. 在数据成员完成各自对齐以后,struct或者union本身也要进行对齐,对齐将按照对齐系数和struct或者union中最大数据成员长度中比较小的那个进行;

先局部成员对齐,然后再全局对齐。

sizeof基本

sizeof 与结构体, 注意对齐的影响

sizeof 与 类

相关文章

  • 布尔

    sizeof(BOOL) = 1sizeof(bool) = 1sizeof(Boolean) = 1

  • 【C语言】3.sizeof

    1.sizeof sizeof并不是函数,而是运算符。可以用sizeof计算有多少字节。通常用sizeof(常量/...

  • C 基本数据类型内存

    sizeof long int=4; //这与int一样 sizeof shor int=2; sizeof do...

  • 那些奇妙的C语言

    sizeof int等同于sizeof(int)

  • c++中特殊运算符

    运算符而不是函数 sizeof:对象大小 sizeof expr ;类型大小 sizeof(type);参数包大小...

  • sizeof(std::string), 到底是多少?

    sizeof(std::string); 又或者 std::string str="";sizeof(str); ...

  • c语言中数组指针

    c语言中没有专门计算数组长度的函数,需使用sizeof(arr)/sizeof(int)计算,其中sizeof(a...

  • enum hack test

    enum hack test output:sizeof(Y): 80sizeof(X): 1

  • 2017C++面试题

    1.sizeof和strlen的区别 sizeof和strlen有以下区别:  sizeof是一个操作符,str...

  • sizeof

    定义一个空的类型,里面没有任何成员变量和函数,对该类型求sizeof,得到的结果是? 答:1 为什么不是0? 答:...

网友评论

      本文标题:sizeof

      本文链接:https://www.haomeiwen.com/subject/mdpnwttx.html