0
我知道肯定數組元素連續存儲,但如果我像這樣聲明:變量是否在一個結構中連續聲明?
class A {
public:
int a, b, c;
// or
int a;
int b;
int c;
}
連續存儲的成員?我一直在考慮是否有可能變量存儲在來自另一個進程的聲明a
和b
之間,因此它不是連續的。但我不確定。有任何保證嗎?
我知道肯定數組元素連續存儲,但如果我像這樣聲明:變量是否在一個結構中連續聲明?
class A {
public:
int a, b, c;
// or
int a;
int b;
int c;
}
連續存儲的成員?我一直在考慮是否有可能變量存儲在來自另一個進程的聲明a
和b
之間,因此它不是連續的。但我不確定。有任何保證嗎?
a
b
和c
保證在結構中以該順序。
但是,一般來說,任何兩個結構成員之間可能存在結構填充。通常,對於只包含int
成員的結構沒有填充,但不做這個假設是一個好習慣。
你可以在編譯時檢查:
static_assert(sizeof(A) == 3 * sizeof(int), "oops, A had padding");
對不起,延遲迴復。無論如何謝謝,我會盡量避免使用它。 – Greffin28
FYI:http://stackoverflow.com/questions/4178175/what-are-aggregates-and-pods-and-how-why-are -they-special –
FYI:http://stackoverflow.com/a/15248697 – Jonas
Woop沒關係,我將標記爲重複謝謝你的鏈接。 @牛米。因爲我測試了它,地址是連續的,所以我猜我有點困惑。 – Greffin28