_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
.
Retornar valor
_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ão-valorNULL
passado em um requestNumber
, ou lineNumber
parâmetro faz com que _CrtIsMemoryBlock
o parâmetro defina o parâmetro para o valor no cabeçalho de depuração do bloco de memória, filename
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 valores padrão: requestNumber
e serão definidos como 0 e lineNumber
filename
serã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 erros de _ASSERT
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 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de