Partilhar via


_CrtIsMemoryBlock

Verifica se um bloco de memória especificado está no heap local e se ele tem um identificador de tipo de bloco de heap de depuração válido (somente versão de depuração).

Sintaxe

int _CrtIsMemoryBlock(
   const void *userData,
   unsigned int size,
   long *requestNumber,
   char **filename,
   int *lineNumber
);

Parâmetros

userData
Ponteiro para o início do bloco de memória a ser verificado.

size
Tamanho do bloco especificado (em bytes).

requestNumber
Ponteiro para o número de alocação do bloco ou NULL.

filename
Ponteiro para o nome do arquivo de origem que solicitou o bloco ou NULL.

lineNumber
Ponteiro para o número de linha no arquivo de origem ou NULL.

Valor retornado

_CrtIsMemoryBlock retornará TRUE se o bloco de memória especificado estiver localizado no heap local e tiver um identificador de tipo de bloco de heap de depuração válido; caso contrário, a função retornará FALSE.

Comentários

A função _CrtIsMemoryBlock verifica se um bloco de memória especificado está localizado no heap local do aplicativo e se ele tem um identificador de tipo de bloco válido. Essa função também pode ser usada para obter o número de ordem de alocação do objeto e o nome do arquivo de origem/número de linha em que a alocação de bloco de memória foi originalmente solicitada. Um nãoNULL valor passado em um requestNumberparâmetro , filename, or lineNumber faz com que _CrtIsMemoryBlock o parâmetro seja definido como o valor no cabeçalho de depuração do bloco de memória, se ele encontrar o bloco no heap local. Quando _DEBUG não está definido, as chamadas para _CrtIsMemoryBlock são removidas durante o pré-processamento.

Se _CrtIsMemoryBlock falhar, ele retornará FALSE, e os parâmetros de saída serão inicializados com os valores padrão: requestNumber e lineNumber são definidos como 0 e filename são definidos como NULL.

Como essa função retorna TRUE ou FALSE, ela pode ser passada para uma das macros para criar um mecanismo básico de tratamento de _ASSERT erros de depuração. O seguinte exemplo causa uma falha de declaração se o endereço especificado não estiver localizado no heap local:

_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
          &filename, &linenumber ) );

Para obter mais informações sobre como _CrtIsMemoryBlock pode ser usado com outras funções de depuração e macros, consulte Macros para relatórios. 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
_CrtIsMemoryBlock <crtdbg.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Bibliotecas

Somente versões de depuração de bibliotecas de tempo de execução C.

Exemplo

Veja o exemplo do _CrtIsValidHeapPointer artigo.

Confira também

Rotinas de depuração