Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.