Speicherverwaltung: Rahmenzuordnung
Zuordnung in den Frames erhält den Namen des "Stapelrahmen" eingerichtet ist, wenn eine Funktion aufgerufen wird.Der Stapelrahmen stellt einen Bereich des Arbeitsspeichers, der vorübergehend die Argumente der Funktion enthält sowie alle Variablen, die definierte lokale Variable für die Funktion sind.Variablen werden häufig als "Feld" Automatische Variablen bezeichnet, da der Compiler automatisch den Leerraum für sie zugeordnet werden.
Es gibt zwei wichtige Eigenschaften von Frames von Namespacezuordnungen.Zuerst wenn Sie eine lokale Variable definieren, wird genügend Speicherplatz auf dem Stapelrahmen zugeordnet, um die gesamte Variable enthalten, auch wenn es sich um ein großes Array oder eine Datenstruktur ist.Zweitens Framevariablen werden automatisch gelöscht, wenn sie den Gültigkeitsbereich verlassen:
void MyFunction()
{
// Local object created on the stack
CString strName;
// Object goes out of scope and is deleted as function ends
}
Für lokale Variablen der Funktion übergang Bereichs dieser Fall, wenn die Funktion beendet, doch der Gültigkeitsbereich einer Frame die Variable als eine Funktion kleiner sein können, wenn geschachtelte öffnende geschweifte Klammern verwendet werden.Damit das automatische Löschen von Framevariablen ist sehr wichtig.Bei der einfachen Typen (z. B. int oder byte) gibt Arrays oder Datenstrukturen, das automatische Löschen einfach den Arbeitsspeicher frei, der durch die Variable verwendet wird.Da die Variable erloschen mehr im Gültigkeitsbereich befindet, kann sie nicht alle zugegriffen werden.Bei C++-Objekte Allerdings ist der Prozess des automatischen Löschen Art von komplizierter.
Wenn ein Objekt als Frame die Variable definiert wurde, wird der Konstruktor aufgerufen wird automatisch an der Stelle, an der die Definition auftritt.Wenn das Objekt den Gültigkeitsbereich verlässt, wird der Destruktor automatisch aufgerufen, bevor der Speicher des Objekts freigegeben wird.Dieser automatische Erstellung und Zerstörung können sehr hilfreich sein. Sie müssen jedoch die automatischen besonders Aufrufe an den Destruktor berücksichtigen.
Der Hauptvorteil des fehlenden Zuordnung von Objekten auf den Frame ist, dass sie automatisch gelöscht werden.Wenn Sie die Objekte in den Frames zugeordnet werden, müssen Sie sich nicht um die vergessenen Objekte, die Speicherverluste verursachen.(Ausführliche Informationen zu Speicherverlusten finden Sie im Artikel Erkennen von Speicherverlusten in MFC). Ein Nachteil besteht darin, dass die Zuordnung des Rahmens Framevariablen nicht außerhalb des Bereichs verwendet werden können.Ein weiterer Aspekt bei der Zuordnung eines Frames für Heapreservierung auswählt, ist der für umfangreiche Strukturen und Objekte, ist es oft besser, den Heap anstelle des Stapels für Speicher zu verwenden, da Stapelspeicher oft eingeschränkt wird.