Dinamikus memóriafoglalás

A dinamikus memóriafoglalás  a számítógép RAM -jának egy programban lévő objektumokhoz való lefoglalásának módszere, amelyben a memória lefoglalása egy objektum számára a program végrehajtása során történik .

Dinamikus memóriakiosztással az objektumok az ún. „ kupac ” ( eng.  heap ): objektum felépítésekor az objektumhoz kért memória méretét jelzi, és ha sikeres, akkor a lefoglalt memóriaterületet viszonylagosan „eltávolítja” a „ halomból ”, így nem érhető el a későbbi memóriafoglalási műveletek során. Ellentétes értelmű művelet a korábban valamilyen objektum által elfoglalt memória felszabadítása: a felszabaduló memória, szintén feltételesen szólva, visszakerül a " kupacba ", és a további memóriafoglalási műveletek során válik elérhetővé.

Ahogy új objektumok jönnek létre a programban, a rendelkezésre álló memória mennyisége csökken. Ezért szükséges a korábban lefoglalt memória folyamatos felszabadítása. Ideális helyzetben a programnak teljesen fel kell szabadítania a munkához szükséges összes memóriát. Ehhez hasonlóan minden szubrutinnak ( eljárásnak vagy függvénynek ) biztosítania kell a végrehajtása során lefoglalt összes memória felszabadítását. A nem megfelelő memóriakezelés az ún. memória " szivárog ", ha a lefoglalt memória nem szabadul fel. A többszörös memóriaszivárgás kimerítheti az összes RAM-ot, és megzavarhatja az operációs rendszert.

Egy másik probléma a memória töredezettsége. A memória kiosztása blokkban történik - a RAM folyamatos töredékei (tehát minden blokk néhány egymást követő bájtból áll ). Egy ponton előfordulhat, hogy a kupacban egyszerűen nincs megfelelő méretű blokk, és még ha van is elég szabad memória az objektum befogadásához, a memóriafoglalási művelet meghiúsul.

A memória dinamikus elosztásának kezelésére egy "szemétgyűjtőt" használnak - egy programobjektumot, amely figyeli a memória lefoglalását és biztosítja annak időben történő felszabadítását. A szemétgyűjtő gondoskodik arról is, hogy a szabad blokkok maximális méretűek legyenek, és ha szükséges, töredezettségmentesíti a memóriát.

Megvalósítási elemek

A C programozási nyelv (C)

A C programozási nyelv a következő funkciókkal rendelkezik a dinamikus memóriafoglaláshoz a szabványos könyvtárban :

A C++ programozási nyelv

A C ++ -nak két operátora van:

Az Object Pascal programozási nyelv

Az Object Pascal két operátorral rendelkezik:

Lásd még

Források