//结构体内存对齐。
//#include <stdio.h>
//#include <stdlib.h>
//struct S1
//{
// char c1;
// int i;
// char c2;
//};
//
//struct S2
//{
// char c1;
// char c2;
// int i;
//};
//
//struct S3
//{
// double d;
// char c;
// int i;
//};
//
//struct S4
//{
// char c1;
// struct S3 s3;
// double d;
//};
//
//int main()
//{
//
// printf("%d\n",sizeof(struct S1)); //12
// printf("%d\n",sizeof(struct S2)); //8
// printf("%d\n",sizeof(struct S3)); //16
// printf("%d\n",sizeof(struct S4)); //32
//
//
// system("pause");
// return 0;
//}
//修改默认对齐数。
//#include <stdio.h>
//#include <stdlib.h>
////设置默认对齐数8;
//#pragma pack(8)
//
//struct S1
//{
// char c1;
// int i;
// char c2;
//};
//
////取消默认对齐数,还原默认。
//
//#pragma pack()
//
//#pragma pack(1)
//
//struct S2
//{
// char c1;
// int i;
// char c2;
//};
////取消设置的默认对齐数,还原默认。
//#pragma pack()
//
//int main()
//{
// //输出结果。
//
// printf("%d\n",sizeof(struct S1)); //12
// printf("%d\n",sizeof(struct S2)); //6
//
// system("pause");
// return 0;
//}
//结论:
//结构体在对齐方式不合适的时候,我们可以修改默认对齐数。
本文深入探讨了C/C++中结构体的内存对齐原理,包括默认对齐方式及如何通过修改对齐数来优化内存布局。通过具体示例展示了不同结构体布局对内存占用的影响。
468

被折叠的 条评论
为什么被折叠?



