我确信数组元素是连续存储的,但是如果我声明了这样的内容,该怎么办:
class A {
public:
int a, b, c;
// or
int a;
int b;
int c;
}成员是连续存储的吗?我一直在想,是否有可能在来自另一个进程的a和b声明之间存储一个变量,这样它就不会是连续的。但我不确定。有什么保证吗?
发布于 2016-11-23 21:56:44
a、b和c保证按结构的顺序排列。
但是,一般情况下,任何两个结构成员之间都可能存在结构填充。通常,对于只包含int成员的结构,不会有填充,但是最好不要做出这样的假设。
您可以在编译时检查这个:
static_assert( sizeof(A) == 3 * sizeof(int), "oops, A had padding" );https://stackoverflow.com/questions/40759908
复制相似问题