Compartilhar via


_aligned_malloc_dbg

Aloca memória em um limite de alinhamento especificado com espaço extra para um cabeçalho de depuração e buffers de substituição (somente versão de depuração).

Sintaxe

void * _aligned_malloc_dbg(
    size_t size,
    size_t alignment,
   const char *filename,
   int linenumber
);

Parâmetros

size
Tamanho da alocação de memória solicitada.

alignment
O valor de alinhamento, que deve ser um inteiro elevado à segunda potência.

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.

Retornar valor

Um ponteiro para o bloco de memória alocado ou NULL, se a operação tiver falhado.

Comentários

_aligned_malloc_dbg é uma versão de depuração da _aligned_malloc função. Quando _DEBUG não está definido, cada chamada para é reduzida a uma chamada para _aligned_malloc_dbg_aligned_malloc. _aligned_malloc e _aligned_malloc_dbg alocam um bloco de memória no heap de base, mas _aligned_malloc_dbg oferece vários recursos de depuração: buffers nos dois lados da parte do usuário do bloco para testar se há perdas e informações de filename/linenumber para determinar a origem das solicitações de alocação. O controle de tipos de alocação específicos com um parâmetro de tipo de bloco não é um recurso de depuração com suporte para alocações alinhadas. As alocações alinhadas aparecerão como um tipo de _NORMAL_BLOCK bloco.

_aligned_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.

_aligned_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. Além disso, _aligned_malloc_dbg valida seus parâmetros. Se alignment não for uma potência de 2 ou size for zero, essa função invocará o manipulador de parâmetros inválido, conforme descrito em Validação de parâmetro. Se a execução puder continuar, essa função retornará NULL e definirá errno como EINVAL.

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 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 suas versões de depuração, consulte Depurar versões de funções de alocação de heap.

Requisitos

Rotina Cabeçalho necessário
_aligned_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.

Confira também

Rotinas de depuração