Versões de depuração de funções de alocação de Heap
This topic applies to:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Native only |
||||
Pro, Premium e Ultimate |
Native only |
A biblioteca de tempo de execução c contém as versões de depuração especiais das funções de alocação de heap. Essas funções têm os mesmos nomes que o lançamento de versões com _dbg acrescentada 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 _dbg, usando malloc e _malloc_dbg como exemplos.
Quando _DEBUG é definida, a CRT mapeia todos os malloc chamadas para _malloc_dbg. Portanto, você não precisa reescrever o seu código usando _malloc_dbg em vez de malloc para receber os benefícios durante a depuração.
Talvez você queira chamar _malloc_dbg explicitamente, entretanto. Chamando _malloc_dbg explicitamente tem alguns benefícios adicionais:
Controle _CLIENT_BLOCK alocações de tipo.
O número de linha e o arquivo de origem onde ocorreu a solicitação de alocação de armazenamento.
Se não desejar converter seu malloc chamadas para _malloc_dbg, você poderá obter as informações do arquivo de origem definindo _CRTDBG_MAP_ALLOC, que faz com que o pré-processador diretamente mapear todas as chamadas para malloc para _malloc_dbg em vez de depender de um wrapper em torno de malloc.
Para controlar os tipos separados de alocações de blocos do cliente, você deve chamar _malloc_dbg diretamente e defina a blockType parâmetro para _CLIENT_BLOCK.
Quando _ Debug não estiver definido, chamadas de malloc não incomodado, são chamadas para _malloc_dbg são resolvidos para malloc, a definição de _CRTDBG_MAP_ALLOC é ignorado, e informações de arquivo de origem pertencentes a solicitação de alocação não são fornecidas. Porque malloc não tem um parâmetro de tipo de bloco, solicitações de _CLIENT_BLOCK tipos são tratados como alocações padrão.