Estrutura CMemoryState
Fornece uma maneira conveniente para detectar vazamentos de memória no seu programa.
struct CMemoryState
Comentários
CMemoryState é uma estrutura e não tem uma classe base.
Um "perda de memória" ocorre quando memória para um objeto é alocada na pilha, mas não desalocada quando não é mais necessário.Tais vazamentos de memória eventualmente podem levar a erros de falta de memória.Há várias maneiras para alocar e desalocar memória no seu programa:
Usando o malloc/disponível família de funções da biblioteca de time de execução.
Usando as funções de gerenciamento de memória de API do Windows, LocalAlloc/LocalFree and GlobalAlloc/GlobalFree.
Usando o C++ novo and Excluir operadores.
The CMemoryState diagnóstico apenas ajuda a detectar memória vazamentos causados quando a memória alocada usando o novo operador não é desalocada usando Excluir.São os outros dois grupos de funções de gerenciamento de memória para programas não-C++ e mistura-los com novo and Excluir no mesmo programa não é recomendado.Uma macro adicional, DEBUG_NEW, é fornecido para substituir o novo operador quando precisar de arquivo e o acompanhamento de número de linha de alocações de memória.DEBUG_NEW é usado sempre que você normalmente usaria o novo operador.
sistema autônomo ocorre com outros diagnósticos, a CMemoryState diagnóstico só está disponível sistema autônomo versões de depurar do seu programa. Uma versão de depurar deve ter o _DEBUG constante definida.
Se você suspeitar que o programa tiver um perda de memória, você pode usar o Checkpoint, Diferença, and DumpStatistics funções para descobrir a diferença entre o estado (objetos alocados) de memória em duas diferentes pontos a execução do programa. Essas informações podem ser úteis para determinar se uma função está limpando todos os objetos aloca.
Se simplesmente saber onde ocorre o desequilíbrio na alocação e desalocação não fornecer informações suficientes, você pode usar o DumpAllObjectsSince função para despejar todos os objetos alocados desde a telefonar anterior a Checkpoint. Este despejo mostra a ordem de alocação, o arquivo de fonte e a linha em que o objeto foi alocado (se você estiver usando DEBUG_NEW para alocação) e a derivação do objeto, seu endereço e seu dimensionar. DumpAllObjectsSince também chama cada objeto Dump função para fornecer informações sobre seu estado corrente.
Para obter mais informações sobre como usar CMemoryState e outros Diagnóstico, ver Depuração de aplicativos MFC.
![]() |
---|
Declarações de objetos do tipo CMemoryState e chamadas para funções de membro devem ser bracketed por #if defined(_DEBUG)/#endif diretivas. Isso faz com que o diagnóstico de memória para ser incluído somente em compilações do seu programa de depuração. |
Requisitos
Cabeçalho: afx.h