_CrtMemDifference
Memória de compara dois estados e retorna suas diferenças (somente a versão de depuração).
int _CrtMemDifference(
_CrtMemState *stateDiff,
const _CrtMemState *oldState,
const _CrtMemState *newState
);
Parâmetros
stateDiff
Ponteiro para uma _CrtMemState estrutura que é usada para armazenar as diferenças entre os estados de memória de dois (retornados).oldState
Ponteiro para um estado anterior de memória (_CrtMemState estrutura).newState
Ponteiro para um estado de memória superior (_CrtMemState estrutura).
Valor de retorno
Se a memória de estados são significativamente diferentes, _CrtMemDifference retorna verdadeiro.Caso contrário, a função retornará FALSE.
Comentários
O _CrtMemDifference funciona compara oldState e newState e armazena suas diferenças em stateDiff, que pode ser usado pelo aplicativo para detectar vazamentos de memória e outros problemas de memória.Quando DEBUG não está definido, planos de _CrtMemDifference são removidos durante o pré-processamento.
newStatee oldState cada um deve ser um ponteiro válido para um _CrtMemState estrutura, definida em Crtdbg.h, que foi preenchido por _CrtMemCheckpoint antes de chamar _CrtMemDifference.stateDiffdeve ser um ponteiro para uma instância anteriormente alocado a _CrtMemState estrutura.Se stateDiff, newState, ou oldState é NULL, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, errno, _doserrno, _sys_errlist e _sys_nerr for definido como EINVAL e a função retornará FALSE.
_CrtMemDifferencecompara a _CrtMemState campo valores dos blocos no oldState às newState e armazena o resultado em stateDiff.Quando o número de tipos de bloco de alocado ou o número total de blocos alocados para cada tipo é diferente entre os estados de memória de dois, os estados são considerados ser significativamente diferente.A diferença entre a maior quantidade já alocada ao mesmo tempo para os dois estados e a diferença entre as alocações de total para os dois estados também são armazenados em stateDiff.
Por padrão, blocos de tempo de execução c internos (_CRT_BLOCK) não estão incluídos nas operações de estado de memória.O _CrtSetDbgFlag função pode ser usada para ativar o _CRTDBG_CHECK_CRT_DF um pouco de _crtDbgFlag para incluir esses blocos na detecção de vazamentos e outras operações de estado de memória.Liberado blocos de memória (_FREE_BLOCK) não causam _CrtMemDifference a retornar verdadeiro.
Para obter mais informações sobre as funções do estado de pilha e o _CrtMemState estrutura, consulte Funções de emissão de relatórios do estado de heap.Para obter informações sobre como blocos de memória são alocados, inicializados e gerenciados na versão de depuração da pilha base, consulte Gerenciamento de memória e a pilha de depuração.
Requisitos
Rotina |
Cabeçalho necessário |
Cabeçalho opcional |
---|---|---|
_CrtMemDifference |
<crtdbg.h> |
<errno.h> |
Para obter mais informações de compatibilidade, consulte Compatibilidade na introdução.
Bibliotecas: versões de depuração de Recursos da biblioteca CRT somente.
Exemplo
Consulte crt_dbg1.
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.