Funções de gancho de alocação
This topic applies to:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Native only |
||||
Pro, Premium e Ultimate |
Native only |
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 várias finalidades diferentes. Usá-lo para testar como um aplicativo lida com 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ção |
---|
Lembre-se da restrição sobre o uso de 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 as alocações de memória de tempo de execução do c. |
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 que você 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 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 for nulo, 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 de solicitação associada a ele e um ponteiro para o número de linha e o nome do arquivo na qual a alocação foi feita, se disponível. Depois que a função de gancho executa qualquer análise e outras tarefas seus desejos de autor, ela deve retornar um TRUE, indicando que a operação de alocação pode continuar, ou FALSE, indicando que a operação deverá apresentar falhas. Um gancho de 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, em seguida, seria incorridas com 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 de memória ou relatar quando ocorrerem de situações específicas.
Consulte também
Tarefas
Exemplo de crt_dbg2: Funções de gancho de depuração c Run-Time.
Conceitos
Ganchos de alocação e as alocações de memória de tempo de execução c