다음을 통해 공유


메모리 관리: 예

이 문서에서는 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. 다음 예제와 같이 힙에 데이터 구조를 할당하고 delete 할당을 취소하는 데 사용합니다new.

    // 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");
    

참고 항목

메모리 관리: 힙 할당