假設下面有非POD結構,對齊是否起作用?如果不是,會有什麼預期?針對非POD結構的對齊緩存
struct S1
{
string s;
int32_t i;
double d;
} __attribute__ ((aligned (64)));
編輯:下面的示例代碼的輸出是64甚至s設置爲一個長字符串。
int main(int argc,char *argv[])
{
S1 s1;
s1.s = "123451111111111111111111111111111111111111111111111111111111111111111111111111";
s1.i = 100;
s1.d = 20.123;
printf("%ld\n", sizeof(s1));
return 1;
}
你觀察到了什麼? – Sheena
該職位更新 –
'std :: string'將其內容存儲在堆上,至少在一般情況下,所以它的sizeof()'不受存儲的字符串長度影響。 – Angew