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