c语言的struct的内存对齐

2019-10-23  本文已影响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联合体则会采用最长的数据类型来共用内存。

上一篇 下一篇

猜你喜欢

热点阅读