Speicherverwaltung: Beispiele

In diesem Artikel wird beschrieben, wie MFC den Frame und Heapbelegungen für jede der drei typische Arten von Speicherbelegungen aus:

  • Ein Bytearray

  • Eine Datenstruktur

  • Ein Objekt

Zuordnung eines Bytearrays

So ordnen Sie einem Bytearray auf den Frame

  • Definieren Sie das Array wie im folgenden Code gezeigt.Das Array wird automatisch deaktiviert, und sein Speicher gegeben frei, wenn die Arrayvariable ihren Bereich endet.

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

So fügen Sie ein Bytearray (oder einen Grunddatentyp) auf dem Heap zugeordnet werden

  • Verwenden Sie den Operator mit der Arraysyntax new 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];
    

Um die Arrays vom Heap freigegeben werden

  • Verwenden Sie den Operator delete wie folgt:

    delete [] myCharArray;
    delete [] myIntArray;
    

Zuordnung einer Datenstruktur

So ordnen Sie eine Datenstruktur auf den Frame

  • Definieren Sie die Strukturvariablen wie folgt:

    struct MyStructType { int topScore; };
    void MyFunc()
    {
        // Frame allocation
        MyStructType myStruct;
    
        // Use the struct 
        myStruct.topScore = 297;
    
        // Reclaimed when exiting scope
    }
    

    Der Speicherplatz, der durch die Struktur belegt wird, wird verworfen, wenn er ihren Bereich endet.

So ordnen Sie auf dem Heap Datenstrukturen

  • Verwenden Sie new, um Datenstrukturen auf dem Heap und delete zuzuordnen, damit sie von gezeigt, wie die folgenden Beispiele nutzen:

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

Zuordnung eines Objekts

So ordnen Sie ein Objekt auf den Frame

  • 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 den Bereich endet.

So fügen Sie ein Objekt auf dem Heap zugeordnet werden

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

    Die folgenden Beispiele für Heap- und Frames davon ausgegangen, dass der CPerson-Konstruktor 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 Frames Zuordnung:

    CMyClass myClass("Joe Smith");
    

    Die Anweisung für Heapreservierung ist:

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

Siehe auch

Konzepte

Speicherverwaltung: Heapreservierung