Wat is dynamische geheugenallocatie?
Dynamische geheugentoewijzing, ook wel heap-gebaseerde geheugentoewijzing genoemd, is een type geheugenbeheer dat sterk wordt afgezet tegen statische geheugentoewijzing. Bij dynamische geheugentoewijzing vertelt de programmeur de computer precies hoeveel geheugen moet worden toegewezen voor elk programma en hoe lang het geheugen moet worden vastgehouden. Dit lost veel van de problemen op die optreden bij statische geheugentoewijzing, zoals overmatig gebruik van geheugen en vastgelopen programma's. Hoewel het veel problemen oplost, kan het dynamische geheugen een probleem worden als de programmeur vergeet het geheugen te dumpen.
Computers gebruiken standaard statische geheugentoewijzing. Dit betekent dat het geheugen programma's vasthoudt wanneer ze worden gebruikt, zelfs als het programma niet meer wordt gebruikt of als het vastgehouden geheugen gevaarlijk wordt of een obstakel vormt voor de uitvoering. Als de gebruiker bijvoorbeeld stopt met het uitvoeren van een programma dat 2 megabytes (MB) op een computer van 3 MB in beslag neemt en een tweede programma nog 2 MB nodig heeft, werkt het tweede programma niet. Dit komt omdat er onvoldoende geheugen over is in de computer voor het andere programma.
Met statische geheugentoewijzing kan de gebruiker of programmeur niet de hoeveelheid geheugen opgeven die hij of zij wil opslaan, noch kan de programmeur het statische geheugen vertellen het geheugen te dumpen om bronnen vrij te maken. Dit is de reden waarom geavanceerde gebruikers vaak dynamische geheugentoewijzing gebruiken. De programmeur is in staat om alles over het geheugen te beheren, inclusief hoe lang middelen kunnen worden vastgehouden.
De programmeur kan bijvoorbeeld dynamische geheugentoewijzing instellen om slechts 1 MB of minder vast te houden, wat voldoende systeemgeheugen zou besparen om andere programma's te kunnen openen. Dit kan worden gedaan omdat het statische geheugen meestal alles over het programma vasthoudt, terwijl dynamisch geheugen programmeurs in staat stelt het op een lagere waarde in te stellen die sommige gegevens bevat, maar niet alles. Tegelijkertijd is statisch geheugen nog steeds nodig en kan dit worden ingesteld in dit toewijzingsschema.
Een potentieel probleem met dynamische geheugentoewijzing - een probleem dat zelden in het spel komt - is dat het dynamische geheugen vol kan raken als de programmeur vergeet een tijdwaarde in te stellen. Als er geen tijdwaarde is ingesteld, houdt dynamisch geheugen de informatie vast, in tegenstelling tot statisch geheugen dat uiteindelijk het geheugen vrijgeeft. Als het programma een vuilnisbeltoepassing heeft en de meeste doen dit, wordt het na een bepaalde tijd geactiveerd om het geheugen te wissen. Het is nog steeds de beste methode om een tijdwaarde in te stellen voor de geheugentoewijzing.