【C语言】结构体内存对齐模式 发表于 2016-04-19 | 更新于 2017-02-16 | 分类于 C语言 | 版权声明:本文为博主原创文章,如需转载请注明出处。 结构体内存对齐模式各种情况代码详解: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include <stdio.h>struct A{ int a; // 此时结构体占用4个字节 char b; // 此时结构体占用8个字节 char c; // 还是8个字节 char d; // 还是8个字节 char e; // 还是8个字节 char f; // 现在是12个字节 };struct B{ char a; // 1个字节 char b; // 2个字节 char c; // 3个字节};struct c{ char name[10]; // 10个字节 char a; // 11个字节 // 对于char型数组来说,会把数组每个元素当作一个char类型};struct d{ int name[10]; // 40个字节 char a; // 44个字节 char b; // 44个字节};struct e{ char a; // 1个字节 int b; // 8个字节 char c; // 12个字节 // 这种写法内存的消耗相比A就会变大};struct f{ char a; // 1 short b; // 4注意这里short占用的是剩下三个字节中的后两个 // 内存对齐总是以2的倍数对齐 char c; // 所以此时是6 int d; // 12 short e; // 16 char f; // 16};