sizeof(...)- nesedi mi velkost roznych typov
sizeof(short int)=2 OK
sizeof(int)=4 OK
-------------------------------
struct a { char X;}; sizeof(a)=1 OK
struct a { short int X;}; sizeof(a)=2 OK
struct a { int X;}; sizeof(a)=4 OK
-------------------------------
struct a { char X; char Y;}; sizeof(a)=2 OK
struct a { char X; short int Y;}; sizeof(a)=4 ..... Preco???
struct a { char X; short int Y; char Z; }; sizeof(a)=6 ..... Preco???
-------------------------------
Kompilacia: gcc subor.c -o subor.o
Pre pridávanie komentárov sa musíte prihlásiť.
gcc zarovnava aj jednotlive polozky struktury na adresy (alignement), napriklad na nasobok 2,4 atd. Nerobi to vzdy (vid:
struct a { char X; char Y;}; sizeof(a)=2
).Preto treba zrusit zarovnavanie pomocou direktivy:
struct a {...} __attribute__ ((packed));
Nuz, zas som o nieco mudrejsi ;-)
Az teraz mi to doslo...
char
sa zarovnava na kazdy byteshort int
sa zarovnava na kazdy druhy byteint
sa zarovnava na kazdy stvrty byte...preto je dolezite, kde sa v strukture ktora polozka nachadza...
A ze mi to skor nenapadlo...