Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Realoca um bloco de memória especificado no heap movendo e/ou redimensionando o bloco (somente a versão de depuração).
Sintaxe
void *_realloc_dbg(
void *userData,
size_t newSize,
int blockType,
const char *filename,
int linenumber
);
Parâmetros
userData
Ponteiro para o bloco de memória alocado anteriormente.
newSize
Tamanho solicitado do bloco realocado (bytes).
blockType
Tipo solicitado do bloco realocado: _CLIENT_BLOCK ou _NORMAL_BLOCK.
filename
Ponteiro para o nome do arquivo de origem que solicitou a realloc operação ou NULL.
linenumber
Número da linha no arquivo de origem em que a realloc operação foi solicitada ou NULL.
Os filename parâmetros and linenumber só estão disponíveis quando _realloc_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 realloc função.
Comentários
_realloc_dbg é uma versão de depuração da realloc função. Quando _DEBUG não estiver definido, cada chamada para _realloc_dbg é reduzida a uma chamada para realloc. realloc e _realloc_dbg realocam um bloco de memória no heap de base, mas _realloc_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.
_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 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. Se o bloco de memória for movido, o conteúdo do bloco original será substituído.
_realloc_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.
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 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 |
|---|---|
_realloc_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.
Exemplo
Veja o exemplo no _msize_dbg artigo.