Compartilhar via


_CrtMemDifference

Compara dois estados de memória e retorna as diferenças (apenas versão de depuração).

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

Parâmetros

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

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

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

Valor de retorno

Se os estados de memória forem significativamente diferentes, _CrtMemDifference retornará TRUE. Caso contrário, a função retornará FALSE.

Comentários

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

newState e oldState devem ser ponteiros válidos para uma estrutura de _CrtMemState, definida em Crtdbg.h, que foi preenchida por _CrtMemCheckpoint antes de chamar _CrtMemDifference. stateDiff deve ser um ponteiro para a instância anteriormente alocada da estrutura _CrtMemState. Se stateDiff, newState ou oldState for NULL, o manipulador de parâmetro inválido será chamado, como descrito em Validação do parâmetro. Se a execução puder continuar, errno, _doserrno, _sys_errlist e _sys_nerr será definido como EINVAL e a função retornará FALSO.

_CrtMemDifference compara os valores do campo _CrtMemState de blocos em oldState com aqueles em newState e armazena o resultado em stateDiff. Quando o número de tipos de bloco alocados ou o número total de blocos alocados para cada tipo difere entre os dois estados de memória, os estados são significativamente diferentes. A diferença entre a maior quantidade já alocada simultaneamente para os dois estados e a diferença entre as alocações totais para os dois estados também são armazenadas em stateDiff.

Por padrão, os blocos internos de tempo de execução C(_CRT_BLOCK) não são incluídos em operações de estado de memória. A função _CrtSetDbgFlag pode ser usada para ativar o bit _CRTDBG_CHECK_CRT_DF de _crtDbgFlag para incluir esses blocos na detecção de vazamento e em outras operações de estado de memória. Blocos de memória liberados (_FREE_BLOCK) não fazem com que _CrtMemDifference retorne VERDADEIRO.

Para obter mais informações sobre as funções de estado da heap e a estrutura de _CrtMemState, consulte Funções de relatório sobre o estado da heap. Para obter informações sobre como os blocos de memória são atribuídos, inicializados, e gerenciados na versão de depuração da heap de base, consulte Detalhes da pilha de depuração CRT.

Requisitos

Rotina

Cabeçalho necessário

Cabeçalho opcional

_CrtMemDifference

<crtdbg.h>

<errno.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade na Introdução.

Bibliotecas: Somente as versões de depuração das Recursos da biblioteca CRT.

Exemplo

Consulte crt_dbg1.

Equivalência do .NET Framework

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

Consulte também

Referência

Rotinas de depuração

_crtDbgFlag