_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
).
Retornar valor
Se a diferença nos estados de memória for significativa, _CrtMemDifference
retornará 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
, ou oldState
for NULL
, o manipulador de parâmetros inválido será chamado, newState
conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, , , errno
_sys_errlist
_doserrno
e estiver definida como EINVAL
e _sys_nerr
a função retornará .FALSE
_CrtMemDifference
compara os valores de campo dos blocos em com os _CrtMemState
de e newState
armazena o resultado em stateDiff
oldState
. 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 funções de estado de heap e a estrutura, consulte Funções de relatório de estado de _CrtMemState
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 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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários