_malloc_dbg
Aloca um bloco de memória no heap com espaço extra para um cabeçalho de depuração e buffers de substituição (somente versão de depuração).
Sintaxe
void *_malloc_dbg(
size_t size,
int blockType,
const char *filename,
int linenumber
);
Parâmetros
size
Tamanho solicitado do bloco de memória (em bytes).
blockType
Tipo de bloco de memória solicitado: _CLIENT_BLOCK
ou _NORMAL_BLOCK
.
filename
Ponteiro para o nome do arquivo de origem que solicitou a operação de alocação ou NULL
.
linenumber
Número da linha no arquivo de origem em que a operação de alocação foi solicitada ou NULL
.
Os filename
parâmetros and linenumber
só estão disponíveis quando _malloc_dbg
foram chamados explicitamente ou a constante do _CRTDBG_MAP_ALLOC
pré-processador foi definida.
Valor retornado
Após a conclusão bem-sucedida, essa função retorna um ponteiro para a parte do usuário do bloco de memória alocado, chama a nova função de manipulador ou retorna NULL
. Para obter uma descrição completa do comportamento de retorno, consulte a seção Comentários a seguir. Para obter mais informações sobre como a nova função de manipulador é usada, consulte a malloc
função.
Comentários
_malloc_dbg
é uma versão de depuração da malloc
função. Quando _DEBUG
não estiver definido, cada chamada para _malloc_dbg
é reduzida a uma chamada para malloc
. Tanto o malloc
quanto o _malloc_dbg
alocam um bloco de memória no heap de base, mas o _malloc_dbg
oferece vários recursos de depuração: buffers em qualquer um dos lados da parte do usuário do bloco para testar se há vazamentos, um parâmetro de tipo do bloco para rastrear tipos de alocação específicos e as informações de filename
/linenumber
para determinar a origem das solicitações de alocação.
_malloc_dbg
aloca o bloco de memória com um pouco mais de espaço que o size
solicitado. O espaço extra é usado pelo gerenciador de heap de depuração para vincular os blocos de memória de depuração e fornecer ao aplicativo informações de cabeçalho de depuração e buffers de substituição. Quando o bloco é alocado, a parte do usuário do bloco é preenchida com o valor 0xCD e cada um dos buffers de substituição é preenchido com 0xFD.
_malloc_dbg
define errno
para ENOMEM
se uma alocação de memória falhar ou se a quantidade de memória necessária (incluindo a sobrecarga mencionada anteriormente) exceder _HEAP_MAXREQ
. Para obter informações sobre esse e outros códigos de erro, consulte errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Para obter informações sobre como os blocos de memória são alocados, inicializados e gerenciados na versão de depuração do heap base, consulte Detalhes do heap de depuração do CRT. Para obter informações sobre os tipos de bloco de alocação e como eles são usados, consulte Tipos de blocos no heap de depuração. Para obter informações sobre as diferenças entre funções de heap padrão e versões de depuração, consulte Depurar versões de funções de alocação de heap.
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_malloc_dbg |
<crtdbg.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Bibliotecas
Somente versões de depuração de bibliotecas de tempo de execução C.
Exemplo
Para encontrar um exemplo de como usar _malloc_dbg
, confira crt_dbg1
.