Posted By: Rat (Krysa von Ratteburg) on 'CZprogram' Title: Re: Poradi polozek struktury Date: Tue Sep 23 16:03:36 1997 > On si je nerozmisti, ale jenom je "PACKNE", coz znamena, ze polozky ve > strukture zarovna na 32-bitu, aby na ne ( a taky pak ty dalsi ) mohl > pristupovat porad dvaatricetibitove. Takze vlastne i takovej BYTE on > reprezentuje v pameti jako DWORD, ale to ty navenek vlastne nevidis.. No, neni to tak uplne pravda. Kompiltatory se snazi zarovnat pouze ty polozky struktury, ktere maji velikost vetsi nez jeden byte. Takze treba DWORD by mel byt na adrese delitelne 4, WORD na adrese sude atd. Pro chary tohle neplati. Podle te casti struktury, ktera ma nejvetsi narokyna zarovnani zarovna taky sizeof(struktura). Takze { int a; char b; } bude vypadat v pameti jako 0-3 byte (a), 4-4 byte (b). sizeof() bude rovno 8. A zarovnani teto struktury v jinych strukturach bude na adrese delitelne 4 (tohle plati urcite pro gcc). A aby to nebylo tak jednoduche, tak v pripade, ze ta struktura bude treba tribytova (a skladajici se pouze z charu), tak sizeof() bude 3 a v jinych strukturach se nebude zarovnavat vubec (tohle plati urcite pro GCC, VC, Watcom, pod Borlandem sem nezkousel). Krysa rat@mail.kolej.mff.cuni.cz Jen jeden pokus http://www.kolej.mff.cuni.cz/~rat a zadne priste!