Partilhar via


_CrtSetAllocHook

Instala uma função definida pelo cliente alocação por conectá-lo no processo de alocação de memória de depuração de tempo de execução C (somente a versão de depuração).

_CRT_ALLOC_HOOK _CrtSetAllocHook(
   _CRT_ALLOC_HOOK allocHook 
);

Parâmetros

  • allocHook
    Nova função de alocação definida pelo cliente para conectar-se ao processo de alocação de memória de depuração de tempo de execução C.

Valor de retorno

Retorna a função de gancho de alocação definida anteriormente, ou NULL se allocHook é NULL.

Comentários

_CrtSetAllocHookpermite que um aplicativo capturar a sua própria função de alocação para o processo de alocação de memória de biblioteca de depuração de tempo de execução C.Como resultado, cada chamada para uma função de alocação de depuração para alocar, realocar ou liberar um disparadores de bloco de memória de uma chamada de função de gancho do aplicativo._CrtSetAllocHookFornece um aplicativo com um método fácil para testar como o aplicativo lida com situações de insuficiência de memória, a capacidade de examinar padrões de alocação e a oportunidade para registrar informações de alocação para análise posterior.Quando _ Debug não está definido, planos de _CrtSetAllocHook são removidos durante o pré-processamento.

O _CrtSetAllocHook função instala a nova função de alocação definida pelo cliente especificada em allocHook e retorna a função de gancho previamente definidos.O exemplo a seguir demonstra como um gancho de alocação definida pelo cliente deve ter como protótipo:

int YourAllocHook( int allocType, void *userData, size_t size, int 
blockType, long requestNumber, const unsigned char *filename, int 
lineNumber);

O allocType argumento especifica o tipo de operação de alocação (_HOOK_ALLOC, _HOOK_REALLOC, e _HOOK_FREE) que disparou a chamada para função de gancho a alocação.Quando o tipo de alocação de disparo é _HOOK_FREE, userData é um ponteiro para a seção de dados de usuário do bloco de memória prestes a ser liberado.No entanto, quando o tipo de alocação de disparo é _HOOK_ALLOC ou _HOOK_REALLOC, userData é NULL porque o bloco de memória ainda não foi alocado.

sizeEspecifica o tamanho da memória bloquear em bytes, blockType indica o tipo de bloco de memória, requestNumber é o número de pedido de alocação de objeto do bloco de memória e, se disponível, filename e lineNumber especificar o número origem de linha e o nome do arquivo em que a operação de alocação de disparo foi iniciada.

Depois que a função de gancho concluir o processamento, ele deve retornar um valor booleano, que faz com que o processo de alocação de tempo de execução c principal como continuar.Quando a função de gancho quer que o processo de alocação principal para continuar como se nunca tivesse sido chamada a função de gancho, então a função de gancho deve retornar TRUE.Isso faz com que a operação de alocação de disparo original a ser executado.Com essa implementação, a função de gancho pode coletar e salvar informações de alocação para análise posterior, sem interferir com a operação de alocação atual ou o estado da pilha de depuração.

Quando a função de gancho quer que o processo de alocação principal para continuar como se a operação de alocação de disparo foi chamada falhou e a função de gancho deve retornar FALSE.Com essa implementação, a função de gancho pode simular uma ampla variedade de condições de memória e depurar os estados de heap para testar como o aplicativo trata cada situação.

Para limpar a função de gancho, passe NULL para _CrtSetAllocHook.

Para obter mais informações sobre como _CrtSetAllocHook pode ser usado com outras funções de gerenciamento de memória ou como escrever suas próprias funções de gancho definidos pelo cliente, consulte Your funções de gancho com depuração própria escrita.

ObservaçãoObservação

_CrtSetAllocHooknão é suportado em /clr:pure.

Requisitos

Rotina

Cabeçalho necessário

_CrtSetAllocHook

<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

Para obter um exemplo de como usar _CrtSetAllocHook, consulte crt_dbg2.

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.

Consulte também

Referência

Rotinas de depuração

_CrtGetAllocHook