Dynamické přidělování paměti je metoda přidělování počítačové paměti RAM pro objekty v programu, ve které se přidělování paměti pro objekt provádí během provádění programu .
Při dynamické alokaci paměti se objekty umísťují do tzv. „ halda “ ( angl. heap ): při konstrukci objektu je indikována velikost paměti požadované pro objekt a v případě úspěchu je alokovaná paměťová oblast relativně řečeno „odstraněna“ z „ haldy “, čímž se stává nepřístupné během následujících operací alokace paměti. Operace, která má opačný význam, je uvolnění paměti dříve obsazené nějakým objektem: uvolněná paměť, také podmíněně řečeno, je vrácena na " hromadu " a je k dispozici během dalších operací přidělování paměti.
Jak jsou v programu vytvářeny nové objekty, množství dostupné paměti se zmenšuje. Z toho plyne potřeba neustále uvolňovat dříve přidělenou paměť. V ideálním případě by měl program zcela uvolnit veškerou paměť, která byla pro práci potřebná. Analogicky k tomu musí každý podprogram ( procedura nebo funkce ) zajistit uvolnění veškeré paměti přidělené během jeho provádění. Nesprávná správa paměti vede k tzv. „ úniky “ paměti, když není uvolněná alokovaná paměť. Vícenásobné úniky paměti mohou vyčerpat veškerou paměť RAM a narušit operační systém.
Dalším problémem je problém fragmentace paměti. Alokace paměti probíhá v blocích - souvislých fragmentech RAM (tedy každý blok má několik po sobě jdoucích bajtů ). V určitém okamžiku halda jednoduše nemusí mít blok vhodné velikosti, a i když je dostatek volné paměti pro umístění objektu, operace alokace paměti selže.
Pro správu dynamické alokace paměti slouží „garbage collector“ – programový objekt, který hlídá alokaci paměti a zajišťuje její včasné uvolnění. Garbage collector také zajišťuje, že volné bloky mají maximální velikost, a v případě potřeby defragmentuje paměť.
Programovací jazyk C má ve standardní knihovně následující funkce pro dynamickou alokaci paměti :
C ++ má dva operátory:
Object Pascal má dva operátory: