AfxCheckMemory 

BOOL AfxCheckMemory ( );

Valor de retorno

Diferente de zero se nenhum erro de memória; caso contrário 0.

Observações

Esta função valida o pool de memória livre e imprime mensagens de erro conforme necessário. Se a função não detectar nenhum corrupção de memória, ele imprime nada.

Todos os blocos de memória atualmente alocados no heap são verificados, incluindo aqueles alocados pelo novo , mas não aqueles alocados pelo chamadas diretas para subjacente allocators de memória, tais como a função malloc ou o Windows GlobalAlloc função. Se qualquer Bloquear for encontrado estar corrompido, uma mensagem será impressa para a saída do depurador.

Se você incluir a linha

# Definir nova DEBUG_NEW

em um módulo de programa, em seguida, as chamadas subseqüentes a AfxCheckMemory mostram o nome do arquivo e linha número onde a memória foi alocada.

&Notanbsp;  Se seu módulo contém uma ou mais implementações de classes serializáveis, então você deve colocar o #define linha após a Último chamada macro IMPLEMENT_SERIAL.

Essa função funciona apenas na versão de Depurar do MFC.

Exemplo

 / / exemplo para AfxCheckMemory
Gaiola * pcage = &nova gaiola (21); nbsp; / / Gaiola é derivada de CObject.
Idade * página = nova idade (22);     / / Idade não é derivada de CObject.
*(((Char*) pcage) - 1) = 99;   / / Corromper byte guarda anterior
página de *(((Char*)) - 1) = 99;    / / Corromper byte guarda anterior
AfxCheckMemory()

Os resultados do programa são os seguintes:

erro de verificação de memória em $0067495F = $63, deve ser $FD
DANOS: Antes de bloco de não-objeto no $00674960
Não-objeto alocado no arquivo test02.cxx(48)
Não-objeto localizado em $00674960 é 2 bytes de comprimento
Erro de verificação de memória em $00674905 = $63, deve ser $FD
DANOS: antes objeto Bloquear em US $00674906
Objeto alocado no arquivo test02.cxx(47)
Objeto localizado no $00674906 é 6 bytes

Index