_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
_doserrno
errno
_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.