3
考慮下面的C++代碼,打印用於double
對齊要求,並將double
類型的結構構件的有效對準:gcc爲什麼不遵守對齊要求?
#include <iostream>
struct S { short x; double y; };
int main() {
S s;
std::cout << __alignof(double) << ' ';
std::cout << (char*)&s.y - (char*)&s << std::endl;
}
我上編譯該代碼用gcc 86。
我期待這個程序輸出8 8
,但是它打印8 4
來代替。 這是爲什麼?
有道理,謝謝! – 2012-07-18 16:58:02
這個奇怪的行爲的原因在這裏解釋:http://www.wambold.com/Martin/writings/alignof.html在「關於對齊的驚人事實」一節。 – 2012-07-18 21:03:48