Compartilhar via


Funções de gancho de alocação

This topic applies to:

Edition

Visual Basic

C#

F#

C++

Web Developer

Express

O tópico não é aplicável O tópico não é aplicável O tópico não é aplicável

Native only

O tópico não é aplicável

Pro, Premium e Ultimate

O tópico não é aplicável O tópico não é aplicável O tópico não é aplicável

Native only

O tópico não é aplicável

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çãoObservaçã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

Outros recursos

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