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
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)