如图所示:
struct noname
{
char c;//
int n;
short k;
char*p;
};
正常情况下,c占1个字节,n占4个字节,k占2个字节,p占8个字节(64位情况下)
但是,结构体分配内存的时候存在内存补齐的现象。
1/4/2/8最大是8,按照8的倍数补齐。
同时为了节约内存,能凑齐4的倍数的尽量凑整
所以c额外补齐1位,占2个字节,n不变,k不变,这样c/n/k正好组成8个字节,所以noname的大小就是16个字节
因为要对齐,比如,4字节的变量,要对齐四字节整数倍的地址。你来排一下吧!