Versões de depuração de funções de alocação de heap
A biblioteca de tempo de execução C (CRT) contém versões especiais de depuração das funções de alocação de heap. Essas funções têm os mesmos nomes que as versões Release com _dbg
anexado a elas. Este artigo descreve as diferenças entre a versão Release de uma função CRT e a _dbg
versão, usando malloc
e _malloc_dbg
como exemplos.
Comportamento em compilações de depuração
Quando _DEBUG
é definido, o CRT mapeia todas as malloc
chamadas para _malloc_dbg
. Portanto, você não precisa reescrever seu código usando _malloc_dbg
em vez de malloc
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 malloc
chamadas para _malloc_dbg
, poderá obter as informações do arquivo de origem definindo _CRTDBG_MAP_ALLOC
, o que faz com que o pré-processador mapeie diretamente todas as chamadas para _malloc_dbg
malloc
, em vez de depender de um wrapper em torno malloc
de .
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
.
Comportamento em compilações sem depuração
Quando _DEBUG
não é definido, as chamadas para não são perturbadas, as chamadas para são resolvidas para malloc
malloc
_malloc_dbg
, a definição de é ignorada e as informações do arquivo de origem referentes à solicitação de _CRTDBG_MAP_ALLOC
alocação não são fornecidas. Como malloc
não tem um parâmetro de tipo de bloco, as solicitações de _CLIENT_BLOCK
tipos são tratadas como alocações padrão.
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de