Partilhar via


_aligned_offset_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_offset_recalloc_dbg(
   void *memblock,
   size_t num,
   size_t size,
   size_t alignment,
   size_t offset,
   const char *filename,
   int linenumber
);

Parâmetros

memblock
O ponteiro do bloco de memória atual.

number
Número de elementos.

size
O comprimento, em bytes, de cada elemento.

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

offset
O deslocamento na alocação de memória para forçar o alinhamento.

filename
Ponteiro para o nome do arquivo de origem que solicitou a operação realloc ou NULL.

linenumber
Número da linha no arquivo de origem em que a operação realloc foi solicitada ou NULL.

Valor retornado

_aligned_offset_recalloc_dbg retorna um ponteiro nulo para o bloco de memória realocado (e possivelmente migrado). 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.

Comentários

_aligned_offset_realloc_dbg é uma versão de depuração da _aligned_offset_recalloc função. Quando _DEBUG não estiver definido, cada chamada para _aligned_offset_recalloc_dbg é reduzida a uma chamada para _aligned_offset_recalloc. Ambos _aligned_offset_recalloc e _aligned_offset_recalloc_dbg realocam um bloco de memória no heap base, mas _aligned_offset_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_offset_realloc_dbg realoca o bloco de memória especificado com um pouco mais de espaço que o newSize solicitado. newSize pode ser maior ou menor que o espaço 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 também alterar o tamanho do bloco de memória. Se o bloco de memória for movido, o conteúdo do bloco original será substituído.

Essa função definirá errno como ENOMEM se a alocação de memória falhar ou se o tamanho solicitado (number * size) for maior que _HEAP_MAXREQ. Para obter mais informações sobre errno, consulte errno, _doserrno, _sys_errlist e _sys_nerr. Além disso, _aligned_offset_recalloc_dbg valida seus parâmetros. Se alignment não for uma potência de 2 ou se offset for diferente de zero e maior ou igual ao solicitado size, 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_offset_recalloc_dbg <malloc.h>

Confira também

Alinhamento de dados