| 32os | 64os | |
|---|---|---|
| char | 1字节对齐 | 1字节对齐 |
| short | 2字节对齐 | 2字节对齐 |
| int | 4字节对齐 | 4字节对齐 |
| long | 4字节对齐 | 8字节对齐 |
| float | 4字节对齐 | 4字节对齐 |
| double | 4字节对齐(分配两次) 总共使用8字节 | 8字节对齐 |
struct person
{
char name[20];
int age;
};
![![[../Images/c-Page-2.drawio.png]]](https://i-blog.csdnimg.cn/blog_migrate/502115c8d27290000ad65d597f3f6d5f.png)
24字节对齐情况
![![[../Images/Pasted image 20240317145142.png]]](https://i-blog.csdnimg.cn/blog_migrate/495421365c18531798a50db66b2addbc.png)
struct person
{
char a;
char b[10];
int c ;
};
![![[../Images/c-字节对齐02.drawio.png]]](https://i-blog.csdnimg.cn/blog_migrate/6ca3c54606f90c92f51f81ac3801abf3.png)
16字节对齐情况
struct person
{
char a;
short b;
char c;
int d;
};
![![[../Images/c-字节对齐03.drawio.png]]](https://i-blog.csdnimg.cn/blog_migrate/615fd8d88c08c6c5e512db55ead284c2.png)
12 字节对齐情况
![![[../Images/Pasted image 20240317145244.png]]](https://i-blog.csdnimg.cn/blog_migrate/446471d3c6ba885ce2fd3baa251c0172.png)
嵌套结构体
struct inner {
char a;
int b;
long c;
};
struct outer {
char c;
char e;
struct inner d;
char f;
long g;
};
![![[../Images/Pasted image 20240317150544.png]]](https://i-blog.csdnimg.cn/blog_migrate/7a99027ad13f5c41b799c91ec8245dbb.png)
嵌套模型运行情况

嵌套模型字节对齐情况
struct inner {
char a;
int b;
};
struct char1 {
char a;
};
struct outer {
char c;
char e;
struct char1 h;
struct inner d;
char f;
long g;
};
![![[../Images/Pasted image 20240317154452.png]]](https://i-blog.csdnimg.cn/blog_migrate/4a29ae3f5df6392ad72b1035fbe91703.png)
嵌套模型验证2
![![[../Images/c-字节对齐05.drawio.png]]](https://i-blog.csdnimg.cn/blog_migrate/2bf908a2c016c14cb96e0a85be2af835.png)
文章分析了不同字节对齐(如1字节、2字节、4字节等)对C语言结构体`person`内存占用的影响,以及嵌套结构体在内存中的排列。讨论了如何影响性能和内存效率。
855





