_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 NULL
for , 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> |