zoukankan      html  css  js  c++  java
  • c++结构体内存对齐

    c++结构体内存对齐

    基本概念:

    各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数, 各成员变量在存放的时候根据在结构中出现的顺序依次申请空间 同时按照上面的对齐方式调整位置。 空缺的字节自动填充, 同时为了确保结构的大小为结构的字节边界数(即该结构中占用最大的空间的类型的字节数)的倍数,所以在为最后一个成员变量申请空间后 还会根据需要自动填充空缺的字节;

    举例说明:

    #include <iostream>
    
    using namespace std;
    
    #pragma pack(8)
    struct Test1
    {
        char a; //0 - 1
        short b;//2 - 3
        int c;// 4 - 7
        float d;//8 - 11
        double e;//12 - 23
    };
    
    #pragma pack(4)
    struct Test2
    {
        char a; //0 - 1
        short b;//2 - 3
        int c;// 4 - 7
        float d;//8 - 11
        double e;//12 - 19
    };
    
    #pragma pack(8)
    struct Test3
    {
        double e;//0-7
        float d;//8-13
        short b;//14-15
        int c;// 16-19
        char a; //20-23
    };
    
    int main()
    {
        std::cout << "size test1= " << sizeof(Test1) << std::endl;
        std::cout << "size test2= " << sizeof(Test2) << std::endl;
        std::cout << "size test3= " << sizeof(Test3) << std::endl;
        return 0;
    }
    
  • 相关阅读:
    单例模式创建
    盛最多水的容器
    魔术索引
    钢条切割
    比较版本号
    矩阵中的路径
    机器人的运动范围
    计网基础问题
    Linux 下android环境的配置
    Fedora15下安装Android开发环境
  • 原文地址:https://www.cnblogs.com/wzxNote/p/14109030.html
Copyright © 2011-2022 走看看