Delen via


Geheugenbeheer: voorbeelden

In dit artikel wordt beschreven hoe MFC frametoewijzingen en heap-toewijzingen uitvoert voor elk van de drie typische soorten geheugentoewijzingen:

Toewijzing van een reeks van bytes

Een reeks bytes reserveren in het frame

  1. Definieer de matrix, zoals wordt weergegeven met de volgende code. De matrix wordt automatisch verwijderd en het geheugen wordt vrijgemaakt wanneer de matrixvariabele het bereik verlaat.

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

Een matrix van bytes (of een primitief gegevenstype) toewijzen aan de heap

  1. Gebruik de new operator met de matrixsyntaxis die in dit voorbeeld wordt weergegeven:

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

De toewijzing van de matrices van de heap ongedaan maken

  1. Gebruik de delete operator als volgt:

    delete[] myCharArray;
    delete[] myIntArray;
    

Toewijzing van een gegevensstructuur

Een gegevensstructuur toewijzen aan het frame

  1. Definieer de structuurvariabele als volgt:

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

    Het geheugen dat door de structuur wordt bezet, wordt vrijgemaakt wanneer deze het bereik verlaat.

Gegevensstructuren toewijzen aan de heap

  1. Gebruik new om gegevensstructuren in het heapgeheugen toe te wijzen en delete om ze vrij te geven, zoals wordt getoond in de volgende voorbeelden:

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

Toewijzing van een object

Een object aan het frame toewijzen

  1. Declareer het object als volgt:

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

    De destructor voor het object wordt automatisch aangeroepen wanneer het object het bereik verlaat.

Een object toewijzen aan de heap

  1. Gebruik de new operator, die een aanwijzer naar het object retourneert, om objecten toe te wijzen aan de heap. Gebruik de delete operator om ze te verwijderen.

    In de volgende heap- en framevoorbeelden wordt ervan uitgegaan dat de CPerson constructor geen argumenten gebruikt.

    // Automatic constructor call here
    CMyClass* myClass = new CMyClass;
    
    myClass->SomeMemberFunction();  // Use the object
    
    delete myClass;  // Destructor invoked during delete
    

    Als het argument voor de CPerson constructor een aanwijzer charis, is de instructie voor frametoewijzing:

    CMyClass myClass("Joe Smith");
    

    De instructie voor heap-toewijzing is:

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

Zie ook

Geheugenbeheer: Heap-toewijzing