toto je blok pamate ktory ti ja dam +------------------------------------------------------------------------------------------+ | | 1024 B +------------------------------------------------------------------------------------------+ na zaciatku, ked zaovlam lza_nastav, tak cely blok je akoze volny, takze ty to musis nejako tam ulozit dajme tomu ze informacna struktura zaberie 16 Bajtov (to je iba priklad, moze ich byt viac), takze to bude vyzerat tak 16 Bajtova informacna struktura, v ktorej sa pise, ze za nou nasleduje 1024-16=1008 bajtov volnej pamate +---+--------------------------------------------------------------------------------------+ | I | volne | 1024 B +---+--------------------------------------------------------------------------------------+ potom ja ked zavolam malloc(100), tak tvoja funkcia musi urobit nieco taketo: 16B 100B 16B +---+-----------+---+----------------------------------------------------------------------+ | I | alokovane | I | volne | 1024 B +---+-----------+---+----------------------------------------------------------------------+ pricom v prvej informacnej strukture pise, ze za nou nasleduje 100 bajtov velky POUZITY blok, a v druhej ze za nou nasleduje 1024-16-100-16=892 Bajtov volneho bloku potom zase ked ja dam dalej alokovat, napr 200, tak zase oznacis miesto za alokovane a vytvoris dalsiu informacnu strukturu 16B 100B 16B 200B 16B +---+-----------+---+---------------------+---+--------------------------------------------+ | I | alokovane | I | alokovane | I | volne | 1024 B +---+-----------+---+---------------------+---+--------------------------------------------+ potom ja zavolam free() na ten 200bajtovy blok, takze ty ho oznacis za volny 16B 100B 16B 200B 16B +---+-----------+---+---------------------+---+--------------------------------------------+ | I | alokovane | I | volne | I | volne | 1024 B +---+-----------+---+---------------------+---+--------------------------------------------+ lenze teraz vidis, ze mas za sebou 2 volne bloky, takze bude prakticke, ak ich spojis: 16B 100B 16B +---+-----------+---+----------------------------------------------------------------------+ | I | alokovane | I | volne | 1024 B +---+-----------+---+----------------------------------------------------------------------+