1. 代码
/* c++结构占用内存的大小 */
struct A{// 共24字节
int a;//4字节
double b;//8字节
int c;//4字节
}A1;
struct B{//共16字节
int a;//4字节
int b;//4字节
double c;//8字节
}B1;
struct C{//共16字节
char a;//1字节
int b;//4字节
double c;//8字节
}C1;
struct D{//共24字节
int b;//4字节
double c;//8字节
char a;//1字节
}D1;
struct E{//共8字节
int b;//4字节
short c;//2字节
char a;//1字节
}E1;
struct F{//共12字节
short c;//2字节
int b;//4字节
char a;//1字节
}F1;
struct G{//共24字节
short c;//2字节
double d;//8字节
int b;//4字节
char a;//1字节
}G1;
struct H{//共16字节
int b;//4字节
char a;//1字节
short c;//2字节
double d;//8字节
}H1;
struct J{//共4字节
char a;//1字节
short b;//2字节
}J1;
struct K{//共1字节
char a;//1字节
}K1;
struct L{//共6字节
short a;//2字节
short b;//2字节
short c;//2字节
}L1;
struct M{//共6字节
char a;//1字节
short b;//2字节
short c;//2字节
}M1;
struct N{//共3字节
char a;//1字节
char b;//1字节
char c;//1字节
}N1;
void test_15_01(){
printf("sizeof(A)=%d\n",sizeof(A));
printf("sizeof(B)=%d\n",sizeof(B));
printf("sizeof(C)=%d\n",sizeof(C));
printf("sizeof(D)=%d\n",sizeof(D));
printf("sizeof(E)=%d\n",sizeof(E));
printf("sizeof(F)=%d\n",sizeof(F));
printf("sizeof(G)=%d\n",sizeof(G));
printf("sizeof(H)=%d\n",sizeof(H));
printf("sizeof(J)=%d\n",sizeof(J));
printf("sizeof(K)=%d\n",sizeof(K));
printf("sizeof(L)=%d\n",sizeof(L));
printf("sizeof(M)=%d\n",sizeof(M));
printf("sizeof(N)=%d\n",sizeof(N));
}
2. 执行结果
3. 分析(规则)(这些例子成员都是基本类型,成员里面没有类、结构体类型、数组)
a. 按照声明顺序存储。
b.按照成员中存在的最大的那个值对齐。(有可能是1、2、4、8...)
b.依据上面两原则,接下来应该是再根据“最优算法”,给成员变量分配内存。
参考:c学习18