Partilhar via


Gerenciamento de memória: Alocação de quadro

Alocação de quadro leva o nome de "quadro de pilha" que é definido sempre que uma função é chamada.O quadro de pilha é uma área da memória temporariamente retém os argumentos da função, bem como quaisquer variáveis que são definidas local para a função.Variáveis de quadro são chamadas variáveis "automáticas" porque o compilador automaticamente aloca o espaço para eles.

Há duas características importantes de alocações de quadro.Primeiro, quando você define uma variável local, espaço é alocado no quadro de pilha para armazenar a variável de inteira, mesmo se ele é um grande array ou estrutura de dados.Segundo, variáveis de quadro são excluídas automaticamente quando saem do escopo:

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

Para variáveis de função local, essa transição de escopo ocorre quando sai de função, mas o escopo de uma variável de quadro pode ser menor do que uma função se chaves aninhadas são usadas.A exclusão automática de variáveis de quadro é muito importante.No caso de simples tipos primitivos (como int ou bytes), arrays ou estruturas de dados, a exclusão automática simplesmente recupera a memória usada pela variável.Desde que a variável tiver saído do escopo, não pode ser acessado mesmo assim.No entanto, no caso de objetos do C++, o processo de exclusão automática é um pouco mais complicado.

Quando um objeto é definido como uma variável de quadro, seu construtor é invocado automaticamente no ponto onde a definição é encontrada.Quando o objeto sai do escopo, do destruidor é invocado automaticamente antes de memória do objeto é recuperada.Construção automática e a destruição podem ser muito útil, mas você deve estar ciente das chamadas automáticas, especialmente para o destruidor.

A principal vantagem de alocação de objetos no quadro é que eles são excluídos automaticamente.Quando você alocar seus objetos no quadro, não precisa se preocupar sobre objetos esquecidos causando vazamentos de memória.(Para obter detalhes sobre vazamentos de memória, consulte o artigo Detectando vazamentos de memória no MFC.) Uma desvantagem da alocação do quadro é que as variáveis de quadro não podem ser usadas fora de seu escopo.Outro fator importante na escolha de alocação de quadro em vez de alocação de heap é que grandes estruturas e objetos, muitas vezes é melhor usar pilha em vez da pilha para armazenamento, desde que o espaço de pilha é geralmente limitado.

Consulte também

Conceitos

Gerenciamento de memória