Un alocator de memorie simplificat, ce implementeaza urmatoarele functii
-
prima comanda apelata;
-
aloca
N
octeti care reprezinta zona de memorie cu care se va lucra.
-
ultima comanda apelata;
-
dealoca acei
N
octeti alocati deINITIALIZE
.
-
afiseaza octetii hartii in format hexazecimal;
-
similar cu hexdump.
-
aloca
SIZE
octeti pe prima pozitie de la stanga la dreapta din arena in care acest lucru este posibil; -
returneaza adresa de inceput a zonei alocate.
-
elibereaza memoria ce incepe la pozitia
INDEX
; -
INDEX
este o pozitie returnata deALLOC
.
-
seteaza
SIZE
octeti incepand cu pozitiaINDEX
la valoareaVALUE
; -
similar cu un
memset
.
-
ofera statistici despre starea memoriei;
-
INFO poate fi:
-
FREE: numarul de octeti nealocati si numarul de zone continue libere din memorie;
-
USAGE: numarul de octeti folositi din arena, eficienta si fragmentarea alocarii;
-
ALLOCATIONS: afiseaza pentru fiecare zona, daca este libera sau alocata impreuna cu dimensiunea acestora;
-
MAP LENGTH: afiseaza un sir de
LENGTH
caractere, care ilustreaza memoria gestionata:*
reprezinta o zona alocata, iar.
una nealocata.
-
- face acelasi lucru ca
ALLOC
, dar aloca doar la un index care este multiplu deALIGN
, undeALIGN
este o putere a lui 2.
-
realoca zona de memorie de la pozitia
INDEX
cu noua dimensiune deSIZE
; -
pozitia in care se face realocarea este prima de la stanga la dreapta in care incap
SIZE
octeti.
-
alipeste toate zonele alocate la stanga, astfel incat, dupa rularea comenzii, fragmentarea scade la 0%;
-
returneaza un vector care face legatura dintre vechii indecsi ai zonelor de memorie si cei noi.
-
functia
FILL
risca sa suprascrie octeti unde nu ar trebuis sa aiba acces; -
functia
SAFE_FILL
verifica sa se scrie la unINDEX
valid (alocat) si un numar de octeti care nu depaseste zona in care se face scrierea.