Freigeben über


Speicherverwaltung: Beispiele

Dieser Artikel beschreibt, wie MFC Framezuordnungen und -Heapbelegungen für alle drei typische Arten von Speicherbelegungen durchführen:

  • Ein Bytearray

  • Eine Datenstruktur

  • Ein Objekt

Zuordnung eines Bytearrays

Um ein Bytearray über den Frame zuordnen

  • Definieren Sie das Array wie durch den folgenden Code dargestellt. Das Array wird automatisch gelöscht und angegeben sein Arbeitsspeicher frei, wenn die Arrayvariablen den Bereich beendet wird.

    {
       const int BUFF_SIZE = 128; 
    
       // Allocate on the frame 
       char myCharArray[BUFF_SIZE];
       int myIntArray[BUFF_SIZE];
       // Reclaimed when exiting scope 
    }
    

Um ein Bytearray (bzw. jedes primitiven Datentyp) auf dem Heap zuordnen

  • Verwenden Sie den Operator neu mit der Arraysyntax, die in diesem Beispiel gezeigt wird:

    const int BUFF_SIZE = 128;
    
    // Allocate on the heap 
    char* myCharArray = new char[BUFF_SIZE]; 
    int* myIntArray = new int[BUFF_SIZE];
    

So Arrays vom Heap frei

  • Verwenden Sie den Operator löschen, wie folgt:

    delete [] myCharArray;
    delete [] myIntArray;
    

Zuordnung einer Datenstruktur

So einer Datenstruktur über den Frame zuordnen

  • 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 Speicher, der durch die Struktur belegt wird, wird freigegeben, wenn der Bereich beendet.

So Datenstrukturen auf dem Heap zuordnen

  • Verwenden Sie neu, um Datenstrukturen auf dem Heap zuzuordnen und löschen, um ihnen, wie dargestellt durch die folgenden Beispiele verwenden:

    // Heap allocation
    MyStructType* myStruct = new MyStructType;
    
    // Use the struct through the pointer ...
    myStruct->topScore = 297;
    
    delete myStruct;    
    

Zuordnung eines Objekts

So fügen Sie ein Objekt über den Frame zuordnen

  • Deklarieren Sie das Objekt, wie folgt:

    {
       CMyClass myClass;     // Automatic constructor call here
    
       myClass.SomeMemberFunction();     // Use the object
    }
    

    Der Destruktor für das Objekt automatisch aufgerufen, wenn das Objekt den Bereich beendet wird.

So fügen Sie ein Objekt auf dem Heap zuordnen

  • Verwenden Sie den Operator neu, der einem Zeiger auf das Objekt zurückgibt, um Objekte auf dem Heap zuzuordnen. Verwenden Sie den Operator löschen, um sie zu löschen.

    Die folgenden Heap- und Framebeispiele wird davon ausgegangen, dass der Konstruktor CPerson keine Argumente akzeptiert.

    // 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 Konstruktor CPerson ein Zeiger auf char ist, wird die Anweisung für Framezuordnung:

    CMyClass myClass("Joe Smith");
    

    Die Anweisung für Heapreservierung ist:

    CMyClass* myClass = new CMyClass("Joe Smith");
    

Siehe auch

Konzepte

Speicherverwaltung: Heapbelegung