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;
    }
    
  • 相关阅读:
    Eclipse安装aptana
    mysql获取下一篇和上一篇文章的ID
    Java回顾之Spring基础
    纯CSS实现各类气球泡泡对话框效果
    百度编辑器ueditor的简单使用
    实施接口
    Java快速教程
    Java GUI程序设计
    JAVA之关于This的用法
    Java 数组基础
  • 原文地址:https://www.cnblogs.com/wzxNote/p/14109030.html
Copyright © 2011-2022 走看看