Compartilhar via


Funções de gancho de alocação

Este tópico se aplica a:

Edição

Visual Basic

C#

C++

Desenvolvedores Web

Express

Somente nativo

Padrão

Somente nativo

PRO e equipe

Somente nativo

Legenda de tabela:

Aplica-se

Não é aplicada

Comando ou comandos oculta por padrão.

Uma função de gancho de alocação, instalada usando _CrtSetAllocHook, é chamado sempre que memória é alocada, realocada ou liberada.Esse tipo de gancho pode ser usado para muitas finalidades diferentes.Usá-lo para testar como um aplicativo lida com situações de insuficiência de memória, por exemplo, ou para examinar os padrões de alocação de ou para registrar informações de alocação para análise posterior.

Observação:

Esteja atento a restrição sobre como usar C em time de execução funções da biblioteca em uma alocação de capturar a função, descrita em Ganchos de alocação e alocações de memória C em tempo de execução.

Uma função de gancho de alocação deve ter um protótipo semelhante ao seguinte:

int YourAllocHook(int nAllocType, void *pvData,
        size_t nSize, int nBlockUse, long lRequest,
        const unsigned char * szFileName, int nLine )

O ponteiro passar para _CrtSetAllocHook é do tipo _CRT_ALLOC_HOOK, conforme definido no CRTDBG.H:

typedef int (__cdecl * _CRT_ALLOC_HOOK)
    (int, void *, size_t, int, long, const unsigned char *, int);

Quando a biblioteca de time de execução chama o gancho, o nAllocType argumento indica qual alocação operação é Sobre para ser executada (_HOOK_ALLOC, _HOOK_REALLOC, or _HOOK_FREE).No caso de um disponível ou uma realocação, pvData contém um ponteiro para o tópico de usuário do bloco prestes a ser liberado. No entanto, no caso de uma alocação, esse ponteiro é nulo, porque a alocação ainda não ocorreu.Os argumentos restantes contêm o dimensionar de alocação em questão, seu tipo de bloco, o número de solicitação seqüencial associado e um ponteiro para o arquivo nome e o número de linha em que foi feita a alocação, se disponível.Depois que a função de gancho executa qualquer análise e outras tarefas de seu autor deseja, ela deve retornar qualquer um dos TRUE, indicando que a operação de alocação pode continuar ou FALSE, indicando que a operação deverá apresentar falhas.Um gancho simples desse tipo pode verificar a quantidade de memória alocada até o momento e retornar FALSE se essa quantidade excedeu um limite pequeno.O aplicativo, em seguida, poderia enfrentar o tipo de erros de alocação que normalmente ocorreria somente quando a memória disponível era muito baixa.Ganchos mais complexos podem manter o controle de padrões de alocação, analisar o uso da memória ou relatar quando ocorrerem situações específicas.

Consulte também

Tarefas

Exemplo de crt_dbg2: C Run-Time Depurando gancho funções

Conceitos

Ganchos de alocação e alocações de memória C em tempo de execução

Outros recursos

Texto de função de gancho de depurar