我目前正在用 C(在 ubuntu x64 中)定义一个结构。它看起来像这样:
#include <semaphore.h>
#include <stdio.h>
#include <stdbool.h>
typedef struct key{
sem_t sem;
char name[32];
int val1;
int val2;
char k;
int n;
} Key;
据我所知(如果有误,请纠正我),x64 中的结构成员将对齐到 8 个字节,而在 x32 中将对齐到 4 个字节。这也是我选择 32 作为 id 数组大小的原因。
我想知道的是:事实上(第一个成员是 sem_t(显然是 32 字节),下一个成员是那个或任何其他东西)第一个(sem)和第二个成员(名称)之间是否会有填充, 在这种情况下)?或者它们是相邻的?如果是这样,这是否适用于 x32 和 x64(因为 32 字节是 4 和 8 字节的倍数)?
提前致谢!
视情况而定,但让我回答一个问题:
为什么他们不应该对齐???
除了互联网数据包之类的东西,
一切都应该是。