Compartilhar via


Versões de depuração das funções de alocação da pilha

A biblioteca em tempo de execução C contém versões especiais de depuração das funções de alocação do heap. Essas funções têm os mesmos nomes que as versões com o _dbg anexado a elas. Este tópico descreve as diferenças entre a versão de lançamento de uma função CRT e a versão de _dbg, usando malloc e _malloc_dbg como exemplos.

Quando _DEBUG estiver definido, o CRT mapeará todas as chamadas de malloc para _malloc_dbg. Consequentemente, você não precisa reescrever seu código usando _malloc_dbg em vez de malloc para receber os benefícios durante a depuração.

No entanto, talvez você queira chamar explicitamente _malloc_dbg. Chamar _malloc_dbg explicitamente tem alguns benefícios adicionais:

  • Acompanhar alocações de tipo _CLIENT_BLOCK.

  • Armazenar o arquivo de origem e o número da linha em que a solicitação de alocação ocorreu.

Se você não quiser converter suas chamadas de malloc para _malloc_dbg, poderá obter informações do arquivo de origem definindo _CRTDBG_MAP_ALLOC, que faz o pré-processador mapear diretamente todas as chamadas para malloc para _malloc_dbg em vez de confiar em um wrapper em torno de malloc.

Para controlar os tipos separados de alocações em blocos do cliente, você deverá chamar _malloc_dbg diretamente e definir o parâmetro blockType como _CLIENT_BLOCK.

Quando _DEBUG não estiver definido, as chamadas para malloc não serão perturbadas, as chamadas para _malloc_dbg serão resolvidas para malloc, a definição de _CRTDBG_MAP_ALLOC será ignorada e as informações do arquivo de origem que pertencem à solicitação de alocação não será fornecida. Como malloc não tem um parâmetro de tipo de bloco, as solicitações para tipos de _CLIENT_BLOCK são tratadas como alocações padrão.

Consulte também

Outros recursos

Técnicas de depuração CRT