메모리 관리: 프레임 할당

프레임 할당 "설정 된 스택 프레임"에서 해당 이름을 사용 하는 함수를 호출할 때마다.스택 프레임에 일시적으로 인수 정의 된 모든 변수 뿐만 아니라 함수 함수는 로컬 저장 메모리 영역입니다.프레임 변수는 컴파일러가 자동으로 공간을 할당 하기 때문에 "자동" 변수 라고도 합니다.

프레임 할당의 두 가지 주요 특징입니다.먼저 지역 변수를 정의할 때 큰 배열이 나 데이터 구조 이더라도 공간이 부족 하 여 전체 변수를 저장할 스택 프레임에 할당 됩니다.둘째, 프레임 변수가 범위를 벗어나면 자동으로 삭제 됩니다.

void MyFunction()
{
    // Local object created on the stack
    CString strName;
    // Object goes out of scope and is deleted as function ends
}

지역 함수 변수의 범위는 전환 경우 중첩 된 중괄호를 사용 하는 경우 함수가 종료 되지만 프레임 변수의 범위는 함수 보다 작을 수 있습니다.프레임 변수의 자동 삭제는 매우 중요합니다.단순한 기본 형식 (같은 int 또는 바이트), 배열 또는 데이터 구조를 단순히 자동 삭제 변수에 의해 사용 된 메모리를 회수 합니다.변수가 범위에서 벗어났기 때문에 액세스할 수 없습니다.그러나 C++ 개체의 경우 자동 삭제 과정을 좀 더 복잡 한입니다.

개체 프레임 변수로 정의 되어 있으면 해당 생성자 정의 발생 하는 시점을 자동으로 호출 됩니다.개체가 범위를 벗어날 때 개체의 메모리가 회수 되기 전에 소멸자가 자동으로 호출 됩니다.이러한 자동 생성과 소멸 매우 유용할 수 있지만 자동 호출, 소멸자에 특히 주의 해야 합니다.

프레임에서 개체를 할당 하는 주요 장점은 자동으로 삭제 됩니다.프레임에 개체를 할당 하면 잊어버린된 개체로 메모리 누수를 걱정할 필요가 없습니다.(에 메모리 누수에 대 한 자세한 내용은 MFC의 메모리 누수 탐지.) 단점은 프레임 할당의 범위를 벗어나는 변수 프레임을 사용할 수 없습니다입니다.프레임 할당과 힙 할당을 선택 하는 또 다른 요인은 대형 구조체와 개체에 대 한이 종종 힙 스택 공간이 제한 되는 경우가 있기 때문에 스택 대신 저장소로 사용 하는 것입니다.

참고 항목

개념

메모리 관리