本文已参与好文召集令活动,点击查看: 后端、大前端双赛道投稿,2万元奖池等你挑战!
// 类和结构体内存占用大小.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
struct MyStruct
{
short a;
// 6个字节补齐
double b;
int c;
// 4个字节补齐
};
struct MyStruct2
{
double b;
short a;
// 2字节补齐
int c;
};
struct MyStruct3
{
double b;
int c;
short a;
// 2字节补齐
};
#pragma pack(1)
struct MyStruct4
{
short a;
double b;
int c;
};
#pragma pack
#pragma pack(2)
struct MyStruct5
{
short a;
double b;
int c;
};
#pragma pack
//////////////////////////////////////////////////////////////////////////
//
int _tmain(int argc, _TCHAR* argv[])
{
int nSize = sizeof(MyStruct);
printf("sizeof(MyStruct)=[%d]\n", nSize); // sizeof(MyStruct)=[24]
int nSize2 = sizeof(MyStruct2);
printf("sizeof(MyStruct2)=[%d]\n", nSize2); // sizeof(MyStruct2)=[16]
int nSize3 = sizeof(MyStruct3);
printf("sizeof(MyStruct3)=[%d]\n", nSize3); // sizeof(MyStruct3)=[16]
int nSize4 = sizeof(MyStruct4);
printf("#pragma pack(1) sizeof(MyStruct4)=[%d]\n", nSize4); // sizeof(MyStruct4)=[14]
int nSize5 = sizeof(MyStruct5);
printf("#pragma pack(2) sizeof(MyStruct5)=[%d]\n", nSize5); // sizeof(MyStruct5)=[14]
system("pause");
return 0;
}
结果
sizeof(MyStruct)=[24]
sizeof(MyStruct2)=[16]
sizeof(MyStruct3)=[16]
#pragma pack(1) sizeof(MyStruct4)=[14]
#pragma pack(2) sizeof(MyStruct5)=[14]
请按任意键继续. . .