C语言中结构体变量内存对齐

2/10/2017来源:ASP.NET技巧人气:370

首先看下面一段代码:

#include <stdio.h> typedef int INT32; typedef unsigned char BYTE; typedef struct demo {     double s;     BYTE b1;     BYTE b2;     INT32 i; }DEMO; int main() {     double i32;     BYTE byte;     DEMO d;          PRintf ("%d, %d\n", sizeof(INT32), sizeof(i32));     printf ("%d, %d\n", sizeof(BYTE), sizeof(byte));     printf ("%d, %d\n", sizeof(DEMO), sizeof(d));     return 0; }

最后结构体变量字节大小是16,为什么呢?按照道理不是14吗?

这里就是内存对齐了,变量在内存中存放的时候是有一定规则的,