美文网首页
c语言的struct的内存对齐

c语言的struct的内存对齐

作者: 尘埃里的玄 | 来源:发表于2019-10-23 14:18 被阅读0次

    本博客以32位也就是四字节为例子:

    #include <iostream>

    struct D{

        int ff;

        char a;

        char c;

        char d;

    };

    struct A

    {

        char a;

        int ff;

        char c;

        char d;

    };

    struct B

    {

        char a;

        char c;

        int ff;

        char d;

    };struct C

    {

        char a;

        char c;

        char d;

        int ff;

    };

    union E{

        char a;

        char c;

        char d;

        int ff;

    };

    int main() {

      char ch='\t';

      char dddd=54;

      short bcv;

      printf("%d",sizeof(D));

      printf("\n%d",sizeof(ch));

      printf("\n%d",sizeof(short));

        printf("\n%d",sizeof(A));

        printf("\n%d",sizeof(B));

        printf("\n%d",sizeof(C));

        printf("\n%d",sizeof(E));

      return 0;

    }

    可以看到结构体的数据变量放的位置不同会导致结构体所占用的内存大小都不一样,他以四字节为一组,若加起来超过四字节就会重新开辟一个字即四个字节

    union联合体则会采用最长的数据类型来共用内存。

    相关文章

      网友评论

          本文标题:c语言的struct的内存对齐

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