【发布时间】:2018-02-10 13:30:21
【问题描述】:
在 amd64 上,以下结构的大小为 16 个字节:
typedef struct _my_struct {
void *a;
UINT32 b;
UINT16 c;
UINT8 d;
UINT8 e;
} my_struct;
但是当我把前三个变量放在一个联合中时,大小变成了 24。为什么?
typedef struct _my_struct {
union {
struct {
void *a;
UINT32 b;
UINT16 c;
} my_inner;
struct {
void **f;
} my_inner2;
}
UINT8 d;
UINT8 e;
} my_struct;
【问题讨论】:
-
联合无关。这是导致填充的内部结构。
-
这是我的问题的一个过于简单的例子。当然,在我的真实结构中,联合中有很多东西。
-
你为什么要介绍 1 个东西的
union?