共用方式為


記憶體管理:範例

本文說明 MFC 如何針對三種一般記憶體配置執行框架配置和堆積配置:

配置位元組陣列

在畫面上配置位元組陣列

  1. 定義陣列,如下列程式碼所示。 當陣列變數結束其範圍時,會自動刪除陣列及其記憶體回收。

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

在堆積上配置位元組陣列(或任何基本資料類型)

  1. new使用 運算子搭配此範例所示的陣列語法:

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

從堆積解除配置陣列

  1. delete使用 運算子,如下所示:

    delete[] myCharArray;
    delete[] myIntArray;
    

資料結構的配置

在框架上配置資料結構

  1. 定義結構變數,如下所示:

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

    結構所佔用的記憶體會在結束其範圍時回收。

在堆積上配置資料結構

  1. 使用 new 來配置堆積上的資料結構並 delete 解除配置,如下列範例所示:

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

物件的配置

在畫面上設定物件

  1. 宣告 物件,如下所示:

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

    物件結束其範圍時,會自動叫用 物件的解構函式。

在堆積上設定物件

  1. new使用 運算子可傳回物件的指標,在堆積上設定物件。 delete使用 運算子來刪除它們。

    下列堆積和框架範例假設建 CPerson 構函式不採用任何引數。

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

    如果建構函式的 CPerson 引數是 的 char 指標,則框架配置的語句為:

    CMyClass myClass("Joe Smith");
    

    堆積配置的語句為:

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

另請參閱

記憶體管理:堆積配置