c语言内存对齐问题

#include <stdio.h>
#pragma pack(4)
struct stu
{
char a;
short b;
int c;
char d;
};
int main()
{
printf("%d\n", sizeof(struct stu));
return 0;
}
#pragma pack(4) // pack(n) n=2^n
windows默认值8 linux 默认值是4
/*
 1、取pack(n) n 取结构体中最大的成员数据类型大小m
 取小得 k= (m<n ? m:n) k值即为外对齐的原则
 2、取结构体成员中的每个元素类型大小,同k比
  (x)依次取小,作为内存对齐的原则,
 3、所谓的对齐,即假设起始地址为0,能被x整除者即为对齐。
*/

上一篇:url参数中有+、空格、=、%、&、#等特殊符号的处理


下一篇:[Python3] 037 函数式编程 装饰器