Wat is dynamische geheugentoewijzing?
Dynamische geheugentoewijzing, ook wel op Heap gebaseerde geheugentoewijzing genoemd, is een type geheugenbeheer dat scherp wordt contrasterd door statische geheugentoewijzing. In dynamische geheugentoewijzing vertelt de programmeur de computer precies hoeveel geheugen hij voor elk programma moet toewijzen en hoe lang hij het geheugen moet vasthouden. Dit lost veel van de problemen op die zich voordoen bij de statische geheugentoewijzing, zoals overmatig gebruik van geheugen en vastgelopen programma's. Hoewel het veel problemen oplost, als de programmeur vergeet het geheugen te vertellen om te dumpen, kan het dynamische geheugen een probleem worden.
Computers gebruiken standaard statische geheugentoewijzing. Dit betekent dat het geheugen programma's vasthoudt wanneer ze worden gebruikt, zelfs als het programma niet langer wordt gebruikt of als het vastgehouden geheugen gevaarlijk wordt of een obstakel voor prestaties. Als de gebruiker bijvoorbeeld stopt met het uitvoeren van een programma dat 2 megabytes (MB) op een machine van 3 MB neemt en een tweede programma nog een 2 MB nodig heeft, werkt het tweede programma niet. Dit komt omdat er niet isOUGH geheugen achtergelaten 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 opgeslagen, noch kan de programmeur het statische geheugen vertellen om 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 besturen, inclusief hoe lang hij aan bronnen vasthoudt.
De programmeur kan bijvoorbeeld de dynamische geheugentoewijzing instellen om slechts 1 MB of minder vast te houden, wat voldoende systeemgeheugen zou opslaan zodat andere programma's kunnen openen. Dit kan worden gedaan omdat het statische geheugen meestal alles aan het programma vasthoudt, terwijl dynamisch geheugen programmeurs in staat stelt het in te stellen tegen een lagere waarde die sommige gegevens bevat, maar niet alles. Tegelijkertijd is het statisch geheugen nog steeds nodig en kan het worden ingesteld in dit toewijzingsschema.
Een potentieel probleem met dynamische geheugentoewijzing - een probleem dat zelden in het spel komt - is dat het dynamische geheugen kan vullen als de programmeur vergeet een tijdwaarde in te stellen. Als er geen tijdwaarde wordt ingesteld, in tegenstelling tot statisch geheugen dat uiteindelijk het geheugen zal vrijgeven, houdt Dynamic Memory de informatie vast. Als het programma een afvalstortingstoepassing heeft, en de meeste doen het, wordt het na een bepaalde tijd geactiveerd om het geheugen te wissen. Het is nog steeds de beste praktijk om een tijdwaarde in te stellen voor de geheugenallocatie.