Compartilhar via


_CrtIsMemoryBlock

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

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

Parâmetros

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

  • [entrada] size
    Tamanho do bloco especificado (em bytes).

  • [saída] requestNumber
    Ponteiro para o número de alocação do bloco ou de NULL.

  • [saída] filename
    Ponteiro para o nome do arquivo de origem que solicitou o bloco ou NULL.

  • [saída] linenumber
    Ponteiro para a linha número no arquivo de origem ou em NULL.

Valor de retorno

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

Comentários

A função de _CrtIsMemoryBlock verifica se um bloco de memória especificada está localizado no heap local do aplicativo e que tem um identificador válido em blocos. Essa função pode ser usada também para obter o número da ordem de alocação do objeto e o nome do arquivo de origem/número de linha na alocação do bloco de memória solicitada foi originalmente. Passando valores não nulos para requestNumber, filename, ou faz com que _CrtIsMemoryBlock parâmetros de linenumber definir esses parâmetros para os valores no cabeçalho de depuração do bloco de memória, se encontrar o bloco no heap local. Quando _DEBUG não for definido, as chamadas para _CrtIsMemoryBlock serão removidos durante pré-processamento.

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

Como essa função retorna TRUE ou FALSE, pode ser transmitido para um de macros de _ASSERT para criar um mecanismo simples de tratamento de erros de depuração. O exemplo a seguir faz com que uma falha de asserção se o endereço especificado não está 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 e macros de depuração, consulte Macros para relatórios. 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

_CrtIsMemoryBlock

<crtdbg.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade na Introdução.

Bibliotecas

Versões de depuração das Bibliotecas em tempo de execução C somente.

Exemplo

Consulte o exemplo do tópico de _CrtIsValidHeapPointer .

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 chamadas de plataformas.

Consulte também

Referência

Rotinas de depuração