Compartilhar via


_CrtMemDifference

Memória de compara dois estados e retorna suas diferenças (somente a versão de depuração).

int _CrtMemDifference( 
   _CrtMemState *stateDiff,
   const _CrtMemState *oldState,
   const _CrtMemState *newState 
);

Parâmetros

  • stateDiff
    Ponteiro para uma _CrtMemState estrutura que é usada para armazenar as diferenças entre os estados de memória de dois (retornados).

  • oldState
    Ponteiro para um estado anterior de memória (_CrtMemState estrutura).

  • newState
    Ponteiro para um estado de memória superior (_CrtMemState estrutura).

Valor de retorno

Se a memória de estados são significativamente diferentes, _CrtMemDifference retorna verdadeiro.Caso contrário, a função retornará FALSE.

Comentários

O _CrtMemDifference funciona compara oldState e newState e armazena suas diferenças em stateDiff, que pode ser usado pelo aplicativo para detectar vazamentos de memória e outros problemas de memória.Quando DEBUG não está definido, planos de _CrtMemDifference são removidos durante o pré-processamento.

newStatee oldState cada um deve ser um ponteiro válido para um _CrtMemState estrutura, definida em Crtdbg.h, que foi preenchido por _CrtMemCheckpoint antes de chamar _CrtMemDifference.stateDiffdeve ser um ponteiro para uma instância anteriormente alocado a _CrtMemState estrutura.Se stateDiff, newState, ou oldState é NULL, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, errno, _doserrno, _sys_errlist e _sys_nerr for definido como EINVAL e a função retornará FALSE.

_CrtMemDifferencecompara a _CrtMemState campo valores dos blocos no oldState às newState e armazena o resultado em stateDiff.Quando o número de tipos de bloco de alocado ou o número total de blocos alocados para cada tipo é diferente entre os estados de memória de dois, os estados são considerados ser significativamente diferente.A diferença entre a maior quantidade já alocada ao mesmo tempo para os dois estados e a diferença entre as alocações de total para os dois estados também são armazenados em stateDiff.

Por padrão, blocos de tempo de execução c internos (_CRT_BLOCK) não estão incluídos nas operações de estado de memória.O _CrtSetDbgFlag função pode ser usada para ativar o _CRTDBG_CHECK_CRT_DF um pouco de _crtDbgFlag para incluir esses blocos na detecção de vazamentos e outras operações de estado de memória.Liberado blocos de memória (_FREE_BLOCK) não causam _CrtMemDifference a retornar verdadeiro.

Para obter mais informações sobre as funções do estado de pilha e o _CrtMemState estrutura, consulte Funções de emissão de relatórios do estado de heap.Para obter informações sobre como blocos de memória são alocados, inicializados e gerenciados na versão de depuração da pilha base, consulte Gerenciamento de memória e a pilha de depuração.

Requisitos

Rotina

Cabeçalho necessário

Cabeçalho opcional

_CrtMemDifference

<crtdbg.h>

<errno.h>

Para obter mais informações de compatibilidade, consulte Compatibilidade na introdução.

Bibliotecas: versões de depuração de Recursos da biblioteca CRT somente.

Exemplo

Consulte crt_dbg1.

Equivalência do .NET Framework

Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Rotinas de depuração

_crtDbgFlag