Compartilhar via


_malloc_dbg

Aloca um bloco de memória no heap com espaço adicional para um cabeçalho de depuração e buffers de substituição (apenas versão de depuração).

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 de linha no arquivo de origem em que a operação de alocação foi solicitada ou NULL.

Os parâmetros filename e linenumber estão disponíveis apenas quando _malloc_dbg for chamado explicitamente ou a constante do pré-processador _CRTDBG_MAP_ALLOC for definida.

Valor de retorno

Mediante 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 do 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 do manipulador é usada, consulte a função malloc.

Comentários

_malloc_dbg é uma versão de depuração da função malloc. Quando _DEBUG não está definido, cada chamada a _malloc_dbg é reduzida a uma chamada para malloc. O malloc e 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 do tipo bloco para rastrear tipos de alocação específicos e 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 adicional é usado pelo gerenciador de heaps de depuração para vincular os blocos de memória de depuração e fornecer informações do cabeçalho de depuração ao aplicativo e substituir buffers. Quando um 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 de base, consulte Detalhes da pilha de depuração CRT. Para obter informações sobre os tipos de blocos de alocação e como eles são usados, consulte Tipos de blocos na heap de depuração. Para obter informações sobre as diferenças entre chamar uma função heap padrão e sua versão de depuração em uma compilação de depuração de um aplicativo, consulte Versões de depuração das funções de alocação da pilha.

Requisitos

Rotina

Cabeçalho necessário

_malloc_dbg

<crtdbg.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade na Introdução.

Libraries

Somente versões de depuração de bibliotecas de tempo de execução C.

Exemplo

Para obter uma amostra de como usar _malloc_dbg, consulte crt_dbg1.

Equivalência do .NET Framework

Não aplicável. Para chamar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Rotinas de depuração

malloc

_calloc_dbg

_calloc_dbg