Compartilhar via


_recalloc_dbg

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

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 alocada anteriormente.

  • num
    Número solicitado de blocos de memória.

  • size
    Solicitou o tamanho de cada bloco de memória (bytes).

  • blockType
    Solicitou um tipo 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 Debug.

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

  • linenumber
    O número no arquivo de origem onde a operação de alocação foi solicitada de linha ou NULL.

O filename e linenumber parâmetros estão disponíveis somente quando _recalloc_dbg foi chamado explicitamente ou o _CRTDBG_MAP_ALLOC pré-processador constante foi definida.

Valor de retorno

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

Comentários

_recalloc_dbgé uma versão de depuração do _recalloc função.Quando _ Debug não está definido, cada chamada para _recalloc_dbg é reduzido a uma chamada para _recalloc.Ambos _recalloc e _recalloc_dbg realocar um bloco de memória na pilha de base, mas _recalloc_dbg acomoda os vários recursos de depuração: buffers em ambos os lados da parte do bloco para testar se há vazamento, um parâmetro de tipo de bloco para controlar os tipos de alocação específica de usuário e filename/linenumber informações para determinar a origem de solicitações de alocação.

_recalloc_dbgrealoca o bloco de memória especificada com um pouco mais espaço do que o tamanho solicitado (num * size) que pode ser maior ou menor que o tamanho do bloco de memória alocada originalmente.O espaço adicional é usado pelo Gerenciador de heap do debug para vincular os blocos de memória de depuração e para fornecer o aplicativo com informações de cabeçalho de depuração e sobrescrever os buffers.A realocação pode resultar em Mover o bloco de memória original para um local diferente na heap, bem como alterar o 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 preenchidas com 0xFD.

_recalloc_dbgdefine errno para ENOMEM se uma alocação de memória falhar; EINVALé retornado se a quantidade de memória necessária (incluindo a sobrecarga mencionada anteriormente) exceder _HEAP_MAXREQ.Para obter informações sobre este e outros códigos de erro, consulte errno, _doserrno, _sys_errlist e _sys_nerr.

Para obter informações sobre como blocos de memória são alocados, inicializados e gerenciados na versão de depuração da pilha base, consulte Gerenciamento de memória e a pilha de depuração.Para obter informações sobre as diferenças entre chamando uma função de heap padrão em vez de sua versão de depuração em uma compilação de depuração de um aplicativo, consulte usando a depurar versão Versus a Base de versão.

Requisitos

Rotina

Cabeçalho necessário

_recalloc_dbg

<crtdbg.h>

Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.

Bibliotecas

Versões de depuração de bibliotecas de tempo de execução c somente.

Equivalência do .NET Framework

Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Rotinas de depuração