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!

Search the boards