Freigeben über


Speicherverwaltung: Beispiele

In diesem Artikel wird beschrieben, wie MFC Framezuordnungen und Heap-Zuordnungen für jede der drei typischen Arten von Speicherzuweisungen durchführt:

Zuweisung eines Bytearrays

So weisen Sie ein Bytearray für den Frame zu

  1. 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

  1. 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 verlagern Sie die Arrays aus dem Heap

  1. Verwenden Sie den delete Operator wie folgt:

    delete[] myCharArray;
    delete[] myIntArray;
    

Zuordnung einer Datenstruktur

So weisen Sie eine Datenstruktur für den Frame zu

  1. 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 wieder beansprucht, wenn er seinen Bereich verlässt.

So weisen Sie Datenstrukturen auf dem Heap zu

  1. Wird new verwendet, um Datenstrukturen für den Heap zuzuweisen und delete sie zuzuordnen, 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

  1. 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

  1. Verwenden Sie den new Operator, der einen Zeiger auf das Objekt zurückgibt, um Objekte für den Heap zuzuweisen. Verwenden Sie den delete 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 charist, 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");
    

Siehe auch

Speicherverwaltung: Heapbelegung