• (四)c语言之字节对齐方式


    // 对齐原则:每一成员需对齐为后一成员类型的倍数

    // 补齐原则:最终大小补齐为成员类型最大值的倍数
    #include <iostream>
    #include <memory>
    #include <string>
    using namespace std;
    
    // 空类,考虑的是当我们声明该类型的实例时候,它必须在内存中
    // 有一定的空间,否则就是不存在的,导致无法使用这些实例
    class A
    {
            A() {};
    };
    
    // 虚函数的大小为4 字节对齐
    class B
    {
            B() {};
            virtual void func() {};
    };
    
    /* 4字节
    int     4       4
    short   2       4+2=6   6不是下一个字节4的倍数,6+2=8
    int     4       8+4=12  12是下一个字节1的倍数
    char    1       12+1=13 13补齐为4的倍数
    */
    struct C
    {
            int a;
            short b;
            int c;
            char d;
    };
    
    /* 4字节
    int     4       4        是下一个字节1的倍数
    short   2       4+2=6    是下一个字节1的倍数
    char    1       6+1=7    不是下一个字节4的倍数 7+1=8
    int     4       8+4=12   是4的倍数
    */
    struct D
    {
            int a;
            short b;
            char c;
            int d;
    };
    int main()
    {
            cout<<"class:  "<<sizeof(A)<<endl;
            cout<<"class:  "<<sizeof(B)<<endl;
            cout<<"struct:  "<<sizeof(C)<<endl;
            cout<<"struct:  "<<sizeof(D)<<endl;
            return 0;
    }
     
    做一个优秀的程序媛
  • 相关阅读:
    C++强制类型转换操作符 const_cast
    URL的UTF-8 decode
    react-8 路由
    react-7 条件渲染与列表渲染
    react-6 react 生命周期
    react-5 受控组件,非受控组件与高阶函数
    react-4 react 组件的三大属性
    react-3 JSX 语法
    react-2 react环境搭建
    react-1 React
  • 原文地址:https://www.cnblogs.com/oytt/p/13677757.html
Copyright © 2020-2023  润新知