_CrtIsMemoryBlock
Verifica se um bloco de memória especificado está na pilha de local e que ele tem um identificador de tipo de bloco de heap de debug válido (somente a versão de depuração).
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *linenumber
);
Parâmetros
[in]userData
Ponteiro para o início do bloco de memória para verificar.[in]size
Tamanho do bloco especificado (em bytes).[out]requestNumber
Ponteiro para o número de alocação do bloco ou NULL.[out]filename
Ponteiro para o nome do arquivo de origem que solicitou o bloco ou NULL.[out]linenumber
Ponteiro para o número da linha no arquivo de origem ou NULL.
Valor de retorno
_CrtIsMemoryBlockRetorna TRUE se o bloco de memória especificado está localizado na pilha local e tem um identificador de tipo de bloco de heap de depuração válido; Caso contrário, a função retornará FALSE.
Comentários
O _CrtIsMemoryBlock função verifica que um bloco de memória especificado está localizado na pilha de local do aplicativo e que ele tem um identificador de tipo válido de bloco.Esta função também pode ser usada para obter o número de pedido de alocação de objeto e o número de linha/nome do arquivo de origem onde a alocação de bloco de memória foi originalmente solicitada.Passando os valores nulos para o requestNumber, filename, ou linenumber causas de parâmetros _CrtIsMemoryBlock para definir esses parâmetros para os valores no cabeçalho de depuração do bloco de memória, se encontra o bloco na pilha de local.Quando _ Debug não está definido, planos de _CrtIsMemoryBlock são removidos durante o pré-processamento.
Se _CrtIsMemoryBlock falhar, ele retorna FALSE e os parâmetros de saída são inicializados com valores padrão: requestNumber e lineNumber são definidos como 0 e filename for definido como NULL.
Esta função retorna TRUE ou FALSE, ele pode ser passado para uma da _ASSERT macros para criar um simples mecanismo de tratamento de erros de depuração.O exemplo a seguir faz com que um erro de declaração se o endereço especificado não está localizado na pilha 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 a macros, consulte Usando Macros para verificação e emissão de relatórios.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 |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.
Bibliotecas
Versões de depuração de bibliotecas de tempo de execução c somente.
Exemplo
Consulte o exemplo para o _CrtIsValidHeapPointer tópico.
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.