Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Die Microsoft Foundation Classes (MFC)-Bibliothek wird weiterhin unterstützt. Wir fügen jedoch keine Features mehr hinzu oder aktualisieren die Dokumentation.
Die Zuordnung im Frame hat ihren Namen von dem „Stack Frame“, der bei jedem Funktionsaufruf eingerichtet wird. Der Stapelframe ist ein Speicherbereich, der vorübergehend die Argumente für die Funktion sowie alle Variablen enthält, die lokal für die Funktion definiert sind. Framevariablen werden häufig als "automatische" Variablen bezeichnet, da der Compiler automatisch den Platz für sie zuweist.
Es gibt zwei wichtige Merkmale von Framezuordnungen. Zuerst wird, wenn Sie eine lokale Variable definieren, genügend Speicherplatz auf dem Stack-Frame reserviert, um die gesamte Variable zu halten, auch wenn es sich um ein großes Array oder eine Datenstruktur handelt. Zweitens werden Framevariablen automatisch gelöscht, wenn sie außerhalb des Gültigkeitsbereichs liegen:
void MyFunction()
{
// Local object created on the stack
CString strName;
// Object goes out of scope and is deleted as function ends
}
Bei lokalen Funktionsvariablen erfolgt dieser Bereichsübergang beim Beenden der Funktion, der Bereich einer Rahmenvariablen kann jedoch kleiner sein als der einer Funktion, wenn verschachtelte Klammern verwendet werden. Diese automatische Löschung von Framevariablen ist sehr wichtig. Bei einfachen Primitiventypen (z int . B. Byte), Arrays oder Datenstrukturen gibt die automatische Löschung einfach den von der Variablen verwendeten Speicher frei. Da die Variable nicht mehr im Gültigkeitsbereich ist, kann trotzdem nicht darauf zugegriffen werden. Im Fall von C++-Objekten ist der Prozess der automatischen Löschung jedoch etwas komplizierter.
Wenn ein Objekt als Framevariable definiert ist, wird der Konstruktor automatisch an dem Punkt aufgerufen, an dem die Definition gefunden wird. Wenn das Objekt außerhalb des Gültigkeitsbereichs liegt, wird der Destruktor automatisch aufgerufen, bevor der Speicher für das Objekt erneut beansprucht wird. Diese automatische Konstruktion und Zerstörung kann sehr praktisch sein, aber Sie müssen sich der automatischen Aufrufe, insbesondere der Destruktor, bewusst sein.
Der hauptvorteil der Zuordnung von Objekten auf dem Frame besteht darin, dass sie automatisch gelöscht werden. Wenn Sie Ihre Objekte auf dem Frame zuordnen, müssen Sie sich keine Gedanken über vergessene Objekte machen, die Speicherverluste verursachen. (Ausführliche Informationen zu Speicherlecks finden Sie im Artikel "Erkennen von Speicherlecks in MFC".) Ein Nachteil der Framezuordnung besteht darin, dass Framevariablen nicht außerhalb ihres Bereichs verwendet werden können. Ein weiterer Faktor bei der Auswahl der Framezuordnung im Vergleich zur Heap-Zuordnung besteht darin, dass es für große Strukturen und Objekte häufig besser ist, den Heap anstelle des Stapels für den Speicher zu verwenden, da Stapelplatz häufig begrenzt ist.