Partilhar via


_CrtMemDifference

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

Sintaxe

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 retornado

Se a diferença nos estados de memória for significativa, _CrtMemDifference retorna TRUE. Caso contrário, a função retorna FALSE.

Comentários

A função _CrtMemDifference compara oldState e newState e armazena suas diferenças em stateDiff, que pode então ser usado pelo aplicativo para detectar perdas de memória 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 cada um deve ser um ponteiro válido para uma _CrtMemState estrutura, definida em crtdbg.h, que _CrtMemCheckpoint foi preenchida antes da chamada para _CrtMemDifference. stateDiff deve ser um ponteiro para uma instância previamente alocada da estrutura _CrtMemState. Se stateDiff, newState, ou oldState for NULL, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, , , , e _sys_nerr for definido como EINVAL e a função retornar FALSE. _sys_errlist_doserrnoerrno

_CrtMemDifference compara os _CrtMemState valores de campo dos blocos com oldState os newState de e armazena o resultado em stateDiff. Quando o número de tipos de blocos alocados ou o número total de blocos alocados para cada tipo difere entre os dois estados de memória, a diferença nos estados é considerada significativa. A diferença entre a maior quantidade alocada ao mesmo tempo para os dois estados e a diferença entre o total de alocações para os dois estados também são armazenadas em stateDiff.

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

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

Requisitos

Rotina Cabeçalho necessário Cabeçalho opcional
_CrtMemDifference <crtdbg.h> <errno.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Bibliotecas: depurar somente as versões das bibliotecas de runtime do C.

Confira também

Rotinas de depuração
_crtDbgFlag