Dynamisk hukommelsestildeling

Dynamisk hukommelsesallokering  er en metode til at allokere computer RAM til objekter i et program, hvor allokeringen af ​​hukommelse til et objekt udføres under udførelsen af ​​programmet .

Med dynamisk hukommelsesallokering placeres objekter i den såkaldte. " heap " ( eng.  heap ): når man konstruerer et objekt, angives størrelsen af ​​den hukommelse, der anmodes om for objektet, og hvis det lykkes, "fjernes" det tildelte hukommelsesområde relativt set fra " heap ", hvilket bliver utilgængelige under efterfølgende hukommelsestildelingsoperationer. En operation, der har en modsat betydning, er frigivelsen af ​​hukommelse, der tidligere var optaget af et eller andet objekt: den frigjorte hukommelse, også betinget set, returneres til " heapen " og bliver tilgængelig under yderligere hukommelsesallokeringsoperationer.

Efterhånden som nye objekter oprettes i programmet, falder mængden af ​​tilgængelig hukommelse. Derfor behovet for konstant at frigive tidligere tildelt hukommelse. I en ideel situation bør programmet fuldstændigt frigøre al den hukommelse, der var påkrævet til arbejdet. Analogt med dette skal hver underrutine ( procedure eller funktion ) sikre frigivelsen af ​​al hukommelse, der er allokeret under dens udførelse. Forkert hukommelsesstyring fører til den såkaldte. " lækager " af hukommelse, når den allokerede hukommelse ikke er frigivet. Flere hukommelseslækager kan opbruge al RAM og forstyrre operativsystemet.

Et andet problem er problemet med hukommelsesfragmentering. Hukommelseallokering sker i blokke - kontinuerlige fragmenter af RAM (hver blok er således et par på hinanden følgende bytes ). På et tidspunkt kan heapen simpelthen ikke have en blok af en passende størrelse, og selvom der er nok ledig hukommelse til at rumme objektet, vil hukommelsesallokeringsoperationen mislykkes.

For at styre den dynamiske allokering af hukommelse bruges en "skraldsamler" - et programobjekt, der overvåger tildelingen af ​​hukommelse og sikrer rettidig frigivelse. Skraldesamleren sørger også for, at de frie blokke har den maksimale størrelse, og defragmenterer om nødvendigt hukommelsen.

Implementeringselementer

C-programmeringssproget (C)

C -programmeringssproget har følgende funktioner til dynamisk hukommelsesallokering inkluderet i standardbiblioteket :

C++ programmeringssproget

C ++ har to operatorer:

Object Pascal-programmeringssproget

Objekt Pascal har to operatorer:

Se også

Kilder