[ Pharos @ 24.01.2006. 17:30 ] @
Povezane liste predstavljam kao typedef struct elem {int broj; struct elem* sled;}Elem;
I onda Elem* lst=NULL;
I sad fino napravim funkciju koja dodaje elemente na početak ili kraj liste i dodam jedno 3 elementa. Pogledam adrese tih elemenata u memoriji preko printf i dobijem sledeće vrednosti
3280848
3280904
3280960

Onda sa printf pogledam sizeof(Elem) kad ono dobijem 8 bajtova. Pogledam sizeof lst->broj i sizeof lst->sled kad ono svaki zauzima po 4 bajta.

Sad mene zanima sledeće. Prvi element u listi se nalazi na adresi 3280848, a drugi na 3280904. Kad oduzmem ta dva broja dobijem 56 što predstavlja količinu memomirje u kojoj je smešten 1 element izražen u bitovima. Odnosno 1 element zauzima 7bajtova u memoriji. Kako onda sa sizeof(Elem) dobijem 8 i svaki od članova tog elementa zauzima po 4 bajta, a ukupno zauzeće u memoriji je 7. Gde nestade taj bajt?
[ NastyBoy @ 24.01.2006. 18:00 ] @
Citat:
što predstavlja količinu memomirje u kojoj je smešten 1 element izražen u bitovima


U bitovima?

Adrese se josh uvek rachunaju u bajtovima, na srecu.
Razlika adresa je razlika u bajtovima. Dinamichki elementi, osim toga, ne moraju da budu naslagani u memoriji redom, jedan za drugim (tj. po standardu mora samo u sluchaju nizova)
[ Pharos @ 24.01.2006. 18:17 ] @
Kako mi je bedno iskorišćena memorija :(
[ NastyBoy @ 24.01.2006. 21:32 ] @
Ako te to brine (a ne bi trebalo da te brine), sedi pa napishi svoj memory-manager za objekte fiksne velichine.