guitarista25 napísal:hej je to na DSA
dik aspon zato nieco, ale asi netusis akym sposobom by sa to malo robit ak chcem mat v pameti prvky s nerovnakou dlzkou ?

volakedy som robil trosku podobny modul do C ktory sa mal vyuzivat na alokaciu velkeho mnozstva malych objektov takze sa konal len jedno zaverecne free... vytvoril som jedno velke pole(napr. 512) (neskor dve aby sa dali alokovat pvky vacsie ako je samotne pole ale to je o inom) ktore sluzilo na pridelovanie pamati lubovolnej velkosti ... struktura potom obsahovala ukazatel na pole, velkost alokovanych bytov a ukazatel na dalsie pole keby sa hento pole zaplnilo (to asi nebudes potrebovat kedze iba na demonstraciu). samotne pridelovanie potom prebiehalo tak ze si uzivatel vyziadal velkost pamate, ktora mi dosla ako parameter.ten som pripocital k vyuzitej pamati a o tuto velkost som posunul ukazatel na volny prvok. potom som vratil neposunuty ukazatel.
k tvojmu pripadu: trochu som to kukol a ak som spravne pochopil tak by to malo zvladat alokaciu prvkou roznej velkosti ale vsimol som si par "nedokonalosti"
1) vratenie indexu do pola pamate.... koho trapi ako je pamat reprezentovana...vratim ukazatel na vyhradenu pamate pre pouzivatela ...dostal co chcel a moze si s tym robit co chce...citat, zapisovat, (ne)pouzit ako sa mu paci
2) presuvanie prvkov pri dispose jedneho prvku aby to bolo ponzistentne... situacia: pouzivatel si 2x poziada o pamat. ta mu je pridelena. vytvori si ukazatel na pamat pre svoju potrebu. prvy prvok potom uvolni a tam sa potom posunu dalsie ale ukazatel posunut nemozes. ked potom alokuje dalsi kus pamate dostane tu na ktoru mal ukazatel. cize ukazatel potom ukazuje inam ako pouzavatel si mysli a navyse data na ktore by mal ukazovat prepise pri zapise do tretieho prvku a ucite bude dost zmatany
riesenie:
1) nepouzivat index na identifikaciu objektu ale ukazatele. pri uvolnovany potom nehladat index ale porovnavat adresy kam ukazatele ukazuju
2)zasadne nepresuvat prvky ale pamatat si kde mam volnu (nevyhradenu) pamat a porovnavat jej velkost s tou kolko mam pridelit.