Compartilhar via


_aligned_recalloc_dbg

Altera o tamanho de um bloco de memória que foi alocado com _aligned_malloc or _aligned_offset_malloc e inicializa a memória para 0 (somente versão de depuração).

Sintaxe

void * _aligned_recalloc_dbg(
   void * memblock,
   size_t num,
   size_t size,
   size_t alignment,
   const char *filename,
   int linenumber
);

Parâmetros

memblock
O ponteiro do bloco de memória atual.

number
O número de elementos.

size
O tamanho, em bytes, de cada elemento.

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.

Valor retornado

_aligned_recalloc_dbg retorna um ponteiro void para o bloco de memória realocado (e possivelmente movido). O valor retornado é NULL se o tamanho for zero e o argumento do buffer não NULLfor , ou se não houver memória disponível suficiente para expandir o bloco para o tamanho especificado. No primeiro caso, o bloco original é liberado. No segundo caso, ele permanece inalterado. O valor retornado indica um espaço de armazenamento que está adequadamente alinhado para armazenamento de qualquer tipo de objeto. Para obter um ponteiro para um tipo que não seja void, use uma conversão de tipo no valor retornado.

É um erro realocar memória e alterar o alinhamento de um bloco.

Comentários

_aligned_recalloc_dbg é uma versão de depuração da _aligned_recalloc função. Quando _DEBUG não estiver definido, cada chamada para _aligned_recalloc_dbg é reduzida a uma chamada para _aligned_recalloc. Ambos _aligned_recalloc e _aligned_recalloc_dbg realocam um bloco de memória no heap base, mas _aligned_recalloc_dbg acomoda vários recursos de depuração: buffers em ambos os lados da parte do usuário do bloco para testar vazamentos e filename/linenumber informações para determinar a origem das solicitações de alocação. O acompanhamento de tipos de alocação específicos com um parâmetro de tipo de bloco não é um recurso de depuração compatível com alocações alinhadas. As alocações alinhadas aparecerão como um tipo de _NORMAL_BLOCK bloco.

_aligned_recalloc_dbg realoca o bloco de memória especificado com um pouco mais de espaço do que o tamanho solicitado (number * size), que pode ser maior ou menor que o tamanho do bloco de memória alocado originalmente. 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. A realocação pode mover o bloco de memória original para um local diferente no heap e alterar o tamanho do bloco de memória. A parte do usuário do bloco é preenchida com o valor 0xCD e os buffers de substituição são preenchidos com 0xFD.

_aligned_recalloc_dbg definirá errno como ENOMEM se uma alocação de memória falhar; EINVAL será retornado se uma 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_recalloc_dbg valida seus parâmetros. Se alignment não for uma potência de 2, essa função invocará o manipulador de parâmetro 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 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 as 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_recalloc_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