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

Alocação no quadro do seu nome de "registro de ativação" é definido sempre que uma função é chamada.registro de ativação é uma área de memória temporariamente contém sistema autônomo argumentos para a função, bem sistema autônomo todas sistema autônomo variáveis definidas local para a função.Variáveis de quadro são chamadas de variáveis "automático" como o compilador automaticamente aloca o espaço para elas.

Há duas características importantes de alocações de quadro.Primeiro, quando você define uma variável local, suficiente espaço é alocado na estrutura de pilhas para conter a variável de inteira, mesmo se houver um grande array ou estrutura de dados.Segundo, variáveis de quadro são excluídas automaticamente quando eles estão fora 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 escopo acontece quando a função sai, mas o escopo de uma variável de quadro pode ser menor do que uma função se chaves aninhadas são usadas.Essa exclusão automático das variáveis do quadro é muito importante.No caso de tipos primitivos simples (sistema autônomo, por exemplo, int ou byte), arrays, ou estruturas de dados, a exclusão automático simplesmente recupera a memória usada pela variável.Desde que a variável estiver fora do escopo, não pode ser acessado mesmo assim.No entanto, no caso de objetos do C++, o processo de exclusão automático é um bit mais complicado.

Quando um objeto é definido sistema autônomo uma variável de quadro, seu construtor é chamado automaticamente no ponto em que a definição é encontrada.Quando o objeto fica fora do escopo, seu destruidor é invocado automaticamente antes que a memória para o objeto é recuperada.Essa construção automático 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 sejam excluídos automaticamente.Quando você alocar seus objetos no quadro, você não precisa se preocupar sobre objetos esquecidos causar vazamentos de memória.(Para obter detalhes sobre vazamentos de memória, consulte o artigo Detecção de vazamento de memória no MFC.) Uma desvantagem de alocação de quadro é que as variáveis de quadro não podem ser usadas fora de seu escopo.Outro fator na escolha de alocação de quadro em vez de alocação de heap é que para grandes estruturas e objetos, ele é geralmente melhor usar a pilha em vez da pilha de armazenamento como espaço de pilha costuma ser limitado.

Consulte também

Conceitos

Gerenciamento de memória