Programarea calculatoarelor 2 - Laborator 12

Implementați funcțiile void *alloc(size_t size) și void release(void *ptr) pentru gestionarea dinamică a memoriei. Acestea vor funcționa ca și malloc, respectiv free, dar lucrând cu memoria dintr-un tablou declarat static în program (de exemplu de 4MB = 2^22 octeți). Memoria va fi gestionată în blocuri de dimensiuni precizate, după cum urmează: La o solicitare, se va aloca un bloc de cea mai mică dimensiune acoperitoare dintre cele permise (ținând cont și de faptul că trebuie să ramână rezervate câmpurile care indică lungimea și ocuparea). Dacă nu există un astfel de bloc disponibil, se va fragmenta (eventual succesiv) un bloc acoperitor, cât mai mic, păstrându-se fragmentele rămase ca blocuri libere.

Testați programul alternând la întâmplare alocări de dimensiuni aleatoare cu dealocări, de asemenea aleatoare, dintre blocurile alocate deja.

Observații:


Marius Minea
Last modified: Wed Jan 7 00:44:21 EET 2004