Ну, после прочтения этого Size of structure with a char, a double, an int and a t я до сих пор не получить размер моей структуры, которая:Sizeof структуре в C
struct s {
char c1[3];
long long k;
char c2;
char *pt;
char c3;
}
И sizeof(struct s)
возвращает мне 40
Но согласно сообщению I говорил, я думал, что память должна нравится этот путь:
0 1 2 3 4 5 6 7 8 9 a b c d e f
+-------------+- -+---------------------------+- - - - - - - -+
| c1 | |k | |
+-------------+- -+---------------------------+- - - - - - - -+
10 11 12 13 14 15 16 17
+---+- -+- -+- - - - - -+----+
|c2 | |pt | | c3 |
+---+- -+- -+- - - - - -+----+
И я должен получить 18
вместо 40
... Может кто-нибудь объяснить мне, что я делаю неправильно? Большое спасибо !
char не 1 байт .. но это 4 байта. 4x4 = 16 + 8 + 4 + 8 + 4 – SSpoke
Я ожидаю, что долгое время будет выровнено на границе 8 байтов. Я ожидаю, что указатель будет выровнен по 4-байтовой границе. Получает половину от 18 до 40 – pm100
Вы дали свои 'k' 8 байтов, но вы выровняли его на границе 4 байта. Зачем? Кроме того, почему 'pt' вдруг только 1 байт? Это указатель. – AnT