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.
In diesem Artikel wird beschrieben, wie MFC Framezuordnungen und Heap-Zuordnungen für jede der drei typischen Arten von Speicherzuweisungen durchführt:
Zuweisung eines Byte-Arrays
So weisen Sie ein Bytearray für den Frame zu
Definieren Sie das Array wie im folgenden Code dargestellt. Das Array wird automatisch gelöscht und sein Speicher zurückgefordert, wenn die Arrayvariable ihren Bereich verlässt.
{ const int BUFF_SIZE = 128; // Allocate on the frame char myCharArray[BUFF_SIZE]; int myIntArray[BUFF_SIZE]; // Reclaimed when exiting scope }
So weisen Sie ein Bytearray (oder einen beliebigen primitiven Datentyp) für den Heap zu
Verwenden Sie den
new
Operator mit der in diesem Beispiel gezeigten Arraysyntax:const int BUFF_SIZE = 128; // Allocate on the heap char* myCharArray = new char[BUFF_SIZE]; int* myIntArray = new int[BUFF_SIZE];
So geben Sie die Arrays vom Heap frei
Verwenden Sie den
delete
Operator wie folgt:delete[] myCharArray; delete[] myIntArray;
Zuordnung einer Datenstruktur
So weisen Sie eine Datenstruktur für den Frame zu
Definieren Sie die Strukturvariable wie folgt:
struct MyStructType { int topScore; }; void MyFunc() { // Frame allocation MyStructType myStruct; // Use the struct myStruct.topScore = 297; // Reclaimed when exiting scope }
Der von der Struktur belegte Speicher wird zurückgefordert, wenn sie ihren Gültigkeitsbereich verlässt.
So weisen Sie Datenstrukturen auf dem Heap zu
Verwenden Sie
new
, um Datenstrukturen auf dem Heap zuzuweisen, unddelete
, um sie freizugeben, wie in den folgenden Beispielen gezeigt:// Heap allocation MyStructType* myStruct = new MyStructType; // Use the struct through the pointer ... myStruct->topScore = 297; delete myStruct;
Zuordnung eines Objekts
So weisen Sie ein Objekt auf dem Frame zu
Deklarieren Sie das Objekt wie folgt:
{ CMyClass myClass; // Automatic constructor call here myClass.SomeMemberFunction(); // Use the object }
Der Destruktor für das Objekt wird automatisch aufgerufen, wenn das Objekt seinen Bereich verlässt.
So weisen Sie ein Objekt auf dem Heap zu
Verwenden Sie den
new
Operator, der einen Zeiger auf das Objekt zurückgibt, um Objekte für den Heap zuzuweisen. Verwenden Sie dendelete
Operator, um sie zu löschen.In den folgenden Heap- und Framebeispielen wird davon ausgegangen, dass der
CPerson
Konstruktor keine Argumente verwendet.// Automatic constructor call here CMyClass* myClass = new CMyClass; myClass->SomeMemberFunction(); // Use the object delete myClass; // Destructor invoked during delete
Wenn das Argument für den
CPerson
Konstruktor ein Zeiger aufchar
ist, lautet die Anweisung für die Framezuordnung:CMyClass myClass("Joe Smith");
Die Anweisung für die Heap-Zuordnung lautet:
CMyClass* myClass = new CMyClass("Joe Smith");