CMemoryState

CMemoryState não tem uma classe base.

CMemoryState fornece uma maneira conveniente para detectar vazamentos de memória no seu programa. Um "vazamento de memória" ocorre quando a memória para um objeto é alocada no heap, mas não desalocada quando é não mais exigido. Tal vazamento de memória pode eventualmente levar a erros fora da memória. Há várias maneiras para alocar e desalocar a memória em seu programa:

O diagnóstico de CMemoryState apenas ajuda a detectar vazamentos de memória causados quando a memória alocada usando o operador de novo não é desalocada usando Excluir. Os outros dois grupos de funções de gerenciamento de memória são para programas não-c + + e misturá-los com novo e Excluir no mesmo programa não é recomendado. Uma macro adicionais, DEBUG_NEW, é fornecida para substituir o operador de novo quando você precisa de arquivo e rastreamento de linha-número de alocações de memória. DEBUG_NEW é usado sempre que você normalmente usaria o operador de novo.

Tal como acontece com outros diagnósticos, o diagnóstico de CMemoryState só está disponível em versões de Depurar do seu programa. Uma versão de depuração deve ter a constante Debug definida.

Se você suspeitar que seu programa tem um vazamento de memória, você pode usar as funções de ponto de verificação, diferençae DumpStatistics para descobrir a diferença entre o estado de memória (objetos alocados) em dois pontos diferentes na execução do programa. Esta informação pode ser útil para determinar se uma função está limpando todos os objetos que ele aloca.

Se simplesmente saber onde ocorre o desequilíbrio na alocação e desalocação não fornecer informações suficientes, você pode usar a função DumpAllObjectsSince para despejar todos os objetos alocados desde a chamada anterior Checkpoint. Este despejo mostra a ordem de alocação, o arquivo de origem e linha onde o objeto foi alocado (se você estiver usando DEBUG_NEW para alocação) e a derivação do objeto, seu endereço e seu tamanho. DumpAllObjectsSince também chama a função de Dump de cada objeto para fornecer informações sobre seu estado atual.

Para obter mais informações sobre como usar CMemoryState e outros diagnósticos, consulte de Suporte de depuração do MFC no Guia do programador do Visual C++.

&Notanbsp;  Declarações de objetos do tipo CMemoryState e chamadas para funções de membro devem ser bracketed por #if defined(_DEBUG)/#endif directivas. Isso faz com que o diagnóstico de memória ser incluído somente em compilações do seu programa de depuração.

Membros da classeGráfico de hierarquia

Index