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.
![]() |
---|
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
Conceitos
Ganchos de alocação e as alocações de memória de tempo de execução c