我确信数组元素是连续存储的,但如果我声明了这样的内容:
class A {
public:
int a, b, c;
// or
int a;
int b;
int c;
}
会员是否连续存放?我一直在想是否有可能将变量存储在来自另一个进程的a
和b
的声明之间,因此它不是连续的。但我不确定。有保证吗?
答案 0 :(得分:2)
a
b
和c
保证在结构中按此顺序排列。
但是,通常,在任何两个struct成员之间可能存在结构填充。通常,对于仅包含int
成员的结构,不会有填充,但最好不要做出这样的假设。
您可以在编译时检查:
static_assert( sizeof(A) == 3 * sizeof(int), "oops, A had padding" );