다음을 통해 공유


메모리 관리: 예제

이 문서에서는 MFC 프레임 할당과 힙 할당 각 일반적인 세 가지 메모리 할당에 대해 수행 하는 방법을 설명 합니다.

  • 바이트 배열

  • 데이터 구조

  • 개체입니다.

바이트 배열 할당

프레임에 바이트 배열을 할당.

  • 배열에는 다음 코드에서와 같이 정의 합니다.배열을 자동으로 삭제 됩니다 및 배열 변수가 범위에서 벗어나면 해당 메모리를 회수 합니다.

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

힙에 바이트 (또는 기본 데이터 형식)의 배열을 할당.

  • 사용은 이 예제와 같이 배열 구문 연산자:

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

힙에서 배열을 할당.

  • 사용은 삭제 같이 연산자:

    delete [] myCharArray;
    delete [] myIntArray;
    

데이터 구조의 할당

프레임에 데이터 구조체를 할당 하려면

  • 구조체 변수 같이 정의 합니다.

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

    범위에서 벗어나면 구조에서 차지 하는 메모리를 회수 합니다.

힙에 데이터 구조체를 할당 하려면

  • 사용 힙에 데이터 구조체를 할당 하 고 삭제 , 다음 예제에서와 같이 할당 합니다:

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

개체 할당

프레임에 개체를 할당 하려면

  • 다음과 같이 개체를 선언 합니다.

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

    개체가 범위에서 벗어나면 개체 소멸자는 자동으로 호출 됩니다.

힙의 개체 할당

  • 사용은 개체 힙에 할당할 개체에 대 한 포인터를 반환, 연산자입니다.사용은 삭제 연산자를 삭제 합니다.

    힙 및 프레임 예제는 가정은 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");
    

참고 항목

개념

메모리 관리: 힙 할당