我目前正在用C(在Ubuntu x64中)定义一个 struct .它看起来是这样的:
#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中的 struct 成员将与8字节对齐,而x32中的 struct 成员将与4字节对齐.这也是我 Select 32作为id数组大小的原因.
我想知道的是:如果是这样(第一个成员是sem_t(显然是32个字节),下一个成员是sem_t或其他任何东西),第一个(Sem)和第二个成员(在本例中是名称)之间会有任何填充吗?或者它们是连续的?如果是这样,这对x32和x64都适用吗(因为32字节是4字节和8字节的倍数)?