sizeof对于大多数人来说是即熟悉由陌生的。熟悉是指大家基本都用过,也知道sizeof是操作符不是函数;陌生就是指sizeof在计算自定义类型的时候,会涉及内存对齐方式,返回结果往往与我们想的大相径庭。本文就是结合内存对齐方式来介绍如何求sizeof的返回值。先来做个测试,各位看官如能准确说出下面几个结构体的sizeof大小的话,楼主觉得你已经没有必要再看下去,请出门左拐~
struct st1
{
double a;
char b;
int c;
};
struct st2
{
char b;
double a;
int c;
};
#pragma pack(push)
#pragma pack(4)
struct st3
{
char b;
double a;
int c;
};
#pragma pack(pop)
#pragma pack(8)
struct inst{
char d;
long e;
};
struct S2 {
char a;
struct inst b;
long long c;
};
#pragma pack()