Share via


_CrtSetAllocHook

Instala uma função de alocação definida pelo cliente enganchando-lo para o C em time de execução depurar o processo de alocação de memória (somente 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 capturar ao C em time de execução depurar o processo de alocação de memória.

Valor de retorno

Retorna a função de gancho de alocação definidas anteriormente ou NULL Se allocHook é NULL.

Comentários

_CrtSetAllocHook permite que um aplicativo capturar a sua própria função de alocação para o C em time de execução depurar o processo de alocação de memória de biblioteca. sistema autônomo resultado, cada telefonar para uma função de alocação de depurar para alocar, realocar ou liberar um disparadores de bloco de memória uma telefonar à função de gancho do aplicativo._CrtSetAllocHook Fornece um aplicativo com um método fácil para testar como o aplicativo lida com situações de memória insuficiente, a capacidade de examinar os padrões de alocação e a oportunidade para registrar informações de alocação para análise posterior. Quando _DEBUG não estiver definido, chamadas de _CrtSetAllocHook serão removidos durante a pré-processamento.

The _CrtSetAllocHook função instala a nova função de alocação definida pelo cliente especificada no 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 ser com protótipo:

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

The allocType argumento especifica o tipo de operação de alocação (_HOOK_ALLOC, _HOOK_REALLOC, e _HOOK_FREE) que disparou a telefonar gancho de função da alocação de. Quando o tipo de alocação de disparo é _HOOK_FREE, userData é um ponteiro para a seção de dados do 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 como o bloco de memória ainda não foi alocado.

size Especifica o dimensionar do bloco de memória 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 Especifique o número fonte de nome e a linha de arquivo em que a operação de alocação de disparo foi iniciada.

Após a função de gancho de processamento, ela deve retornar um valor booliano, que informa ao processo de alocação de time de execução C principal como continuar.Quando a função de gancho o processo de alocação principal para continuar sistema autônomo se a função de gancho nunca tinha sido chamada, 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 sobre a alocação para análise posterior, sem interferir com a operação de alocação corrente ou o estado da pilha de depurar.

Quando a função de gancho o processo de alocação principal para continuar sistema autônomo se a operação de alocação de disparo foi chamada e falhou, 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 estados de heap para testar como o aplicativo lida com cada situação.

Para desmarcar a função de gancho, passar NULL para _CrtSetAllocHook.

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

Observação:

_CrtSetAllocHook Não há suporte para nas /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 depurar de Bibliotecas de time de execução c somente.

Exemplo

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

Equivalente do NET Framework

Não aplicável. Para telefonar 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 depurar

_CrtGetAllocHook