Partilhar via


Usando a compilação depurar para verificar para substituir memória

Para usar a compilação de depurar para verificar se há memória substituir, primeiro você deve recompilar seu projeto para depurar.Depois, ir para início do InitInstance função e adicione a seguinte linha:

afxMemDF |= checkAlwaysMemDF;

O alocador de memória depurar coloca bytes protetor em torno de todas as alocações de memória.No entanto, esses bytes de proteção não faça nenhum benefício, a menos que você verificar se eles tiverem sido alterados (que indica uma substituir de memória).Caso contrário, isso simplesmente fornece um buffer que pode ser, na verdade, permitem que seja escapar uma substituir de memória.

Ativando o checkAlwaysMemDF, você forçará o MFC para fazer uma telefonar para o AfxCheckMemory funciona sempre que uma telefonar para novo or Excluir é feita.Se uma substituir de memória foi detectada, ele irá gerar uma mensagem TRACE com aparência semelhante à seguinte:

Damage Occurred! Block=0x5533

Se você vir uma dessas mensagens, você precisa depurar seu código para determinar onde o dano ocorreu.Para isolar mais precisamente onde a substituir de memória ocorreu, você pode fazer chamadas explícitas para AfxCheckMemory Você mesmo. Por exemplo:

ASSERT(AfxCheckMemory());
    DoABunchOfStuff();
    ASSERT(AfxCheckMemory());

Se a primeira declaração for bem-sucedido e o outro falha, isso significa que a substituir de memória deve ter ocorrido na função entre as duas chamadas.

Dependendo da natureza do seu aplicativo, você pode descobrir que afxMemDF faz com que o programa executado muito lentamente até mesmo testar. The afxMemDF variável faz AfxCheckMemory para ser chamado para cada telefonar para novo e excluir. Nesse caso, você deve dispersão suas chamadas para AfxCheckMemory() sistema autônomo mostrado acima e tente isolar a memória sobrescrevem dessa maneira.

Consulte também

Referência

Corrigindo problemas de compilação de versão