Was ist dynamische Speicherzuordnung?
Die dynamische Speicherzuweisung, auch Heap-basierte Speicherzuweisung genannt, ist eine Art der Speicherverwaltung, die stark von der statischen Speicherzuweisung abweicht. Bei der dynamischen Speicherzuweisung teilt der Programmierer dem Computer genau mit, wie viel Speicher für jedes Programm zugewiesen werden soll und wie lange der Speicher gehalten werden soll. Dies löst viele der Probleme, die bei der statischen Speicherzuweisung auftreten, z. B. übermäßige Speicherbelegung und festgefahrene Programme. Während es viele Probleme löst, kann der dynamische Speicher zu einem Problem werden, wenn der Programmierer vergisst, den Speicher zum Sichern anzuweisen.
Computer verwenden standardmäßig die statische Speicherzuordnung. Dies bedeutet, dass der Speicher Programme enthält, wenn diese verwendet werden, auch wenn das Programm nicht mehr verwendet wird oder wenn der gespeicherte Speicher gefährlich wird oder die Leistung beeinträchtigt. Wenn der Benutzer beispielsweise die Ausführung eines Programms beendet, das 2 MB (MB) auf einem 3-MB-Computer benötigt, und ein zweites Programm weitere 2 MB benötigt, funktioniert das zweite Programm nicht mehr. Dies liegt daran, dass auf dem Computer nicht mehr genügend Speicher für das andere Programm vorhanden ist.
Bei der statischen Speicherzuweisung kann der Benutzer oder Programmierer weder die Speichermenge angeben, die gespeichert werden soll, noch kann der Programmierer den statischen Speicher anweisen, den Speicher zu sichern, um Ressourcen freizugeben. Aus diesem Grund verwenden erfahrene Benutzer häufig die dynamische Speicherzuweisung. Der Programmierer ist in der Lage, alles im Speicher zu steuern, einschließlich der Zeit, die zum Speichern von Ressourcen benötigt wird.
Beispielsweise kann der Programmierer die dynamische Speicherzuordnung so einstellen, dass sie nur 1 MB oder weniger enthält, wodurch genügend Systemspeicher eingespart wird, damit andere Programme geöffnet werden können. Dies kann geschehen, weil der statische Speicher normalerweise alles über das Programm enthält, während der dynamische Speicher es Programmierern ermöglicht, ihn auf einen niedrigeren Wert zu setzen, der einige Daten enthält, aber nicht alles. Gleichzeitig wird weiterhin statischer Speicher benötigt, der in diesem Zuordnungsschema festgelegt werden kann.
Ein potenzielles Problem bei der dynamischen Speicherzuweisung - ein Problem, das nur selten auftritt - besteht darin, dass der dynamische Speicher möglicherweise voll wird, wenn der Programmierer vergisst, einen Zeitwert festzulegen. Wenn kein Zeitwert festgelegt ist, behält der dynamische Speicher im Gegensatz zum statischen Speicher, der den Speicher schließlich freigibt, die Informationen bei. Wenn das Programm eine Garbage-Dump-Anwendung hat und die meisten tun, wird sie nach einer bestimmten Zeit aktiviert, um den Speicher zu löschen. Es wird weiterhin empfohlen, einen Zeitwert für die Speicherzuweisung festzulegen.