zoukankan      html  css  js  c++  java
  • 关于结构体字节对齐的笔记

    1,空结构体的字节大小为:1;

    2,含有static成员的结构体:sizeof 只算存栈中分配的空间大小,static成员存储在全局数据区内,故 static 成员变量不计算在内。

    3,在默认对齐方式中,每种类型的存储开始地址是 能被该类型大小整除的地址。故:每次计算都假设结构体开始地址是 0;

    4,遇到成员是结构体变量的:将此结构体变量当做一个数据类型,但是:

                                  注意:

                                             千万不能把此结构体的 sizeof 当做该变量的类型大小

                                             也不能直接将此结构体拆解开

                                  解法:

                                             此结构体成员变量的类型大小 理解为 该结构体成员变量的 成员中类型大小 最大的变量的大小,做字节对齐(第三步)

    5,共用体:共用体的大小取决于成员的最大长度,但是共用体的大小应该是所有成员的整数倍,,不够就补齐

    6,修改对齐方式:#pragma pack(n)

    6,对于c++含有虚函数的类(结构体),不管有几个 都要考虑在该类(结构体)内存第一个字节加上一个 4字节变量(应为虚函数靠指向虚函数表的一个指针实现的)。

  • 相关阅读:
    生产者和消费者,锁,队列
    爬虫日记-xpath来临
    进程进阶
    Entity Framework 复杂类型(转)
    EF Code First 学习笔记:约定配置(转)
    EF Code First学习笔记 初识Code First(转)
    JSON草稿
    JSON实例(单对象)
    JSON语法2
    JSON 语法
  • 原文地址:https://www.cnblogs.com/OrdinaryMiracle/p/4810497.html
Copyright © 2011-2022 走看看