结构体的大小 -- 内存对齐
程序员文章站
2024-03-23 10:18:28
...
#include<iostream>
using namespace std;
struct t1 //结果为8的倍数,因为最大成员类型double占8字节
{
char a; //1
char b; //1
short c; //2 ,增加4个字节的空白
double d; //8
}; //16
struct t2 //结果为2的倍数,因为最大成员类型short占2字节
{
char a; //1 , 增加1个字节的空白
short c; //2
}; //4
struct t3 //结果为8的倍数,因为最大成员类型double占8字节
{
double a; //8个
char d; //1, 增加7个字节的空白
}; //16
struct s1 //结果为8的倍数,因为最大成员类型double占8字节
{
char a; //1, 增加3个空白
struct{ //结果为4的倍数,因为最大成员类型int占8字节
int v;
}; //4
double l; //8
char e; //1, 增加7个字节的空白
}; //24
struct s2 //结果为8的倍数,因为最大成员类型double占8字节
{
char a; //1, 增加7个空白
struct{ //结果为8的倍数,因为最大成员类型double占8字节
double v;
}; //8
int l; //4
char e; //1, 增加3个字节的空白
int k; //4 增加4个空白
}; //32
int main()
{
cout << sizeof(t1) << endl;
cout << sizeof(t2) << endl;
cout << sizeof(t3) << endl;
cout << sizeof(s1) << endl;
cout << sizeof(s2) << endl;
return 0;
}
上一篇: 事件不会消除依赖性
下一篇: Makefile与宏