Compartilhar via


Funções de gancho de alocação

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

ObservaçãoObservação

Esteja atento a restrição sobre como usar funções de biblioteca de tempo de execução c em uma função de gancho de alocação, descrita em ganchos de alocação e alocações de memória C Run-Time.

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 em CRTDBG.H:

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

Quando a biblioteca de tempo de execução chama o gancho do nAllocType argumento indica qual alocação operação for executada (_HOOK_ALLOC, _HOOK_REALLOC, ou _HOOK_FREE).No caso de um livre ou realocação, pvData contém um ponteiro para o tópico do usuário do bloco prestes a ser liberado.Entretanto, no caso de alocação, esse ponteiro é null, porque a alocação ainda não ocorreu.Os argumentos restantes contêm o tamanho da alocação em questão, seu tipo de bloco, o número seqüencial do pedido associado e um ponteiro para o número de linha e o nome do arquivo na qual foi feita a alocação, se disponível.Depois que a função de gancho executa qualquer análise e outras tarefas deseja seu autor, ela deve retornar um TRUE, indicando que a operação de alocação pode continuar, ou FALSE, indicando que a operação falhar.Um gancho simple desse tipo pode verificar a quantidade de memória alocada até agora e retornar FALSE se essa quantidade excedeu um limite pequeno.O aplicativo então seria 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 controlar de padrões de alocação, analisar o uso de memória ou relatório quando ocorrerem situações específicas.

Consulte também

Tarefas

crt_dbg2 Sample

Conceitos

Ganchos de alocação e as alocações de memória de tempo de execução c

Outros recursos

Escrita de função de gancho de depuração.