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