_malloc_dbg
Aloca um bloco de memória no heap com espaço adicional para um cabeçalho de depuração e sobrescrever buffers (somente a versão de depuração).
void *_malloc_dbg(
size_t size,
int blockType,
const char *filename,
int linenumber
);
Parâmetros
size
Solicitou o tamanho do bloco de memória (em bytes).blockType
Solicitou um tipo de bloco de memória: _CLIENT_BLOCK ou _NORMAL_BLOCK.filename
Ponteiro para o nome do arquivo de origem que solicitou a operação de alocação ou nulo.linenumber
O número no arquivo de origem onde a operação de alocação foi solicitada de linha ou NULL.
O filename e linenumber parâmetros estão disponíveis somente quando _malloc_dbg foi chamado explicitamente ou o _CRTDBG_MAP_ALLOC pré-processador constante foi definida.
Valor de retorno
Após a conclusão bem-sucedida, esta função retorna um ponteiro para a parte do usuário do bloco de memória alocada, chama a função de manipulador novo ou retorna NULL.Para obter uma descrição completa do comportamento de retorno, consulte a seção de comentários a seguir.Para obter mais informações sobre como a nova função de manipulador é usada, consulte o malloc função.
Comentários
_malloc_dbgé uma versão de depuração do malloc função.Quando _ Debug não está definido, cada chamada para _malloc_dbg é reduzido a uma chamada para malloc.Ambos malloc e _malloc_dbg alocar um bloco de memória na pilha de base, mas _malloc_dbg oferece vários recursos de depuração: buffers em ambos os lados da parte do bloco para testar se há vazamento, um parâmetro de tipo de bloco para controlar os tipos de alocação específica de usuário e filename/linenumber informações para determinar a origem de solicitações de alocação.
_malloc_dbgaloca o bloco de memória com um pouco mais espaço que o solicitado size.O espaço adicional é usado pelo Gerenciador de heap do debug para vincular os blocos de memória de depuração e para fornecer o aplicativo com informações de cabeçalho de depuração e sobrescrever os buffers.Quando o bloco é alocado, a parte do usuário do bloco é preenchida com o valor 0xCD e cada um dos buffers de substituição são preenchidas com 0xFD.
_malloc_dbgdefine 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 este e outros códigos de erro, consulte errno, _doserrno, _sys_errlist e _sys_nerr.
Para obter informações sobre como blocos de memória são alocados, inicializados e gerenciados na versão de depuração da pilha base, consulte Gerenciamento de memória e a pilha de depuração.
Para obter informações sobre os tipos de bloco de alocação e como eles são usados, consulte Tipos de blocos no Heap Debug.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_malloc_dbg |
<crtdbg.h> |
Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.
Bibliotecas
Versões de depuração de bibliotecas de tempo de execução c somente.
Exemplo
Para obter um exemplo 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.