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.