rozmiar struktury zawierającej long double

0

Dlaczego struktura (czy klasa) zawierająca pole long double alokuje dla niego nie 10, ale 16 bajtów ? najprostszy przykład.
typedef struct{long double ld;} lds; , sizeof(lds) = 16
Sprawdziłem jak to sie dzieje wewnątrz struktur i za każdym polem typu long double znajduje sie jeszcze 6 nie wiadomo skąd wziętych bajtów, których zawartości nie moge rozszyfrować. Dodam, że te 6 bajtów CHYBA są zawsze takie same dla konkretnej wartości long double zapisanej 10 bajtów wcześniej.
</cpp>

0

bo kompilator umieszcza dane tak, aby procesor mógł się do nich efektywniej odwoływać. konkretnie - dane są umieszczane modulo ich rozmiar zaokrąglony w górę do najbliższej potęgi dwójki. oczywiście można to wyłączyć (odpowiednie słowo kluczowe przy definicji rekordu bądź opcje kompilatora)

1 użytkowników online, w tym zalogowanych: 0, gości: 1