메모리 관리: 예제
이 문서에서는 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");