#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整除者即为对齐。
*/
相关文章
- 12-30C语言判断文件指针是否结尾的问题
- 12-30C语言解决回文数、字符问题
- 12-30汉罗塔问题(c语言)
- 12-30C语言递归解决汉诺塔问题
- 12-30C语言汉诺塔问题详解
- 12-30C语言输出变量和表达式结果不一致问题
- 12-30C语言中字符字符串以及内存操作函数
- 12-30C语言中字符串和内存库函数的模拟实现
- 12-30【C语言进阶学习笔记】三、字符串函数+内存函数详解(2)
- 12-30C语言栈生成方向以及内存存放方向(小端对齐)