Compartilhar via


_recalloc_dbg

Realoca uma matriz e inicializa seus elementos como 0 (somente versão de depuração).

Sintaxe

void *_recalloc_dbg(
   void *userData,
   size_t num,
   size_t size,
   int blockType,
   const char *filename,
   int linenumber
);

Parâmetros

userData
Ponteiro para o bloco de memória alocado anteriormente.

number
Número necessário de blocos de memória.

size
Tamanho necessário de cada bloco de memória (bytes).

blockType
Tipo solicitado de bloco de memória: _CLIENT_BLOCK ou _NORMAL_BLOCK.

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.

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.

Os filename parâmetros and linenumber só estão disponíveis quando _recalloc_dbg foram chamados explicitamente ou a constante do _CRTDBG_MAP_ALLOC pré-processador foi definida.

Valor retornado

Após a conclusão bem-sucedida, essa função retorna um ponteiro para a parte do usuário do bloco de memória realocado, chama a nova função de manipulador ou retorna NULL. Para obter uma descrição completa do comportamento de retorno, consulte a seção Comentários a seguir. Para obter mais informações sobre como a nova função de manipulador é usada, consulte a _recalloc função.

Comentários

_recalloc_dbg é uma versão de depuração da _recalloc função. Quando _DEBUG não estiver definido, cada chamada para _recalloc_dbg é reduzida a uma chamada para _recalloc. _recalloc e _recalloc_dbg realocam um bloco de memória no heap de base, mas _recalloc_dbg acomoda diversos recursos de depuração: buffers nos dois lados da parte do usuário do bloco para testar se há perdas, um parâmetro de tipo de bloco para rastrear tipos de alocação específicos e informações de filename/linenumber para determinar a origem das solicitações de alocação.

_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 resultar na movimentação do bloco de memória original para um local diferente no heap e na alteração do tamanho do bloco de memória. A parte do usuário do bloco é preenchida com o valor 0xCD e cada um dos buffers de substituição são preenchidos com 0xFD.

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

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 as diferenças entre funções de heap padrão e versões de depuração, consulte Depurar versões de funções de alocação de heap.

Requisitos

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