_CrtMemDifference
Compara dois memória declara e retorna suas diferenças (somente versão de depurar).
int _CrtMemDifference(
_CrtMemState *stateDiff,
const _CrtMemState *oldState,
const _CrtMemState *newState
);
Parâmetros
stateDiff
Ponteiro para um _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 estados são significativamente diferentes _CrtMemDifference Retorna verdadeiro. Caso contrário, a função retornará falso.
Comentários
The _CrtMemDifference função compara oldState e newState e armazena suas diferenças em stateDiff, que, em seguida, pode ser usado pelo aplicativo para detectar vazamento de memória e outros problemas de memória. Quando _DEBUG não foi definido, chamadas para _CrtMemDifference serão removidos durante a pré-processamento.
newState e oldState cada um deve ser um ponteiro válido para um _CrtMemState estrutura, definida no Crtdbg.h, preenchidas por _CrtMemCheckpoint antes de ligar _CrtMemDifference. stateDiff deve ser um ponteiro para uma instância do anteriormente alocado do _CrtMemState estrutura. If stateDiff, newState, ou oldState é NULL, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, errno, _doserrno, _sys_errlist e _sys_nerr é definido como EINVAL e a função retornará falso.
_CrtMemDifference compara o _CrtMemState valores de campo de blocos em oldState às newState e armazena o resultado no stateDiff. Quando o número de tipos de bloco alocado ou o número total de blocos alocados para cada tipo difere entre os estados de memória de dois, os estados são considerados ser significativamente diferente.A diferença entre a maior quantidade nunca ao mesmo tempo alocada 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 time de execução C internos (_CRT_BLOCK) não são incluídos em operações de estado da memória. The _CrtSetDbgFlag função pode ser usada para ativar o _CRTDBG_CHECK_CRT_DF bit de _crtDbgFlag para incluir esses blocos em detecção de vazamento e outras operações de estado da memória. Blocos de memória liberada (_FREE_BLOCK) não causam _CrtMemDifference para retornar TRUE.
Para obter mais informações sobre funções de estado de heap e o _CrtMemState estrutura, consulte Funções de Relatórioss de estado de heap. Para obter informações sobre como os blocos de memória são alocados, inicializado e gerenciado na versão de depurar do heap de base, consulte Gerenciamento de memória e a pilha de Depurar.
Requisitos
Rotina |
Cabeçalho necessário |
Cabeçalho opcional |
---|---|---|
_CrtMemDifference |
<crtdbg.h> |
<errno.h> |
Para obter mais informações de compatibilidade, consulte Compatibility na introdução.
Bibliotecas: Versões de depurar de C em time de execução bibliotecas somente.
Exemplo
Consulte Exemplo de crt_dbg1: C Basic Run-Time Depurando recursos.
Equivalente do NET Framework
Não aplicável. Para telefonar a função C padrão, use PInvoke. For more information, see Exemplos de invocação de plataforma.