Partilhar via


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

Consulte também

Referência

Rotinas de depurar

_crtDbgFlag