_recalloc
Uma combinação de realloc e de calloc. Realoca uma matriz na memória e inicializa os elementos como 0.
void *_recalloc(
void *memblock
size_t num,
size_t size
);
Parâmetros
memblock
Ponteiro para o bloco de memória anteriormente atribuído.num
Número de elementos.size
Comprimento em bytes de cada elemento.
Valor de retorno
_recalloc retorna um ponteiro de void (movido e possivelmente) no bloco de memória realocado.
Se não houver memória suficiente disponível para expandir o bloco ao tamanho especificado, o bloco original permanecerá inalterado, e NULL é retornado.
Se o tamanho solicitado for zero, o bloco apontado por memblock será liberado; o valor de retorno é NULL, aponte para e memblock é deixado em um bloco liberado.
O valor de retorno para um espaço de armazenamento que é garantia de ser alinhado adequadamente para o armazenamento de qualquer tipo de objeto. Para obter um ponteiro para um tipo diferente de void, use uma conversão de tipos no valor de retorno.
Comentários
A função derecalloc _o tamanho de um bloco de memória alocada. O argumento de memblock ao início do bloco de memória. Se memblock é NULL, _recalloc se comporta da mesma maneira que calloc e atribui-se um novo bloco de num *os bytes de size . Cada elemento é inicializado como 0. Se memblock não é NULL, deve ser um ponteiro retornado por uma chamada a callocanterior, a malloc, ou a realloc.
Como o novo bloco pode estar em um novo local na memória, o ponteiro retornado pelorecalloc _não é garantido como o ponteiro passado pelo argumento de memblock .
_recalloc define errno a ENOMEM se a alocação de memória falhar ou se a quantidade de memória solicitada exceder _HEAP_MAXREQ. Para obter mais informações sobre esse e outros códigos de erro, consulte errno, _doserrno, _sys_errlist e _sys_nerr.
chamadas realloc derecalloc para usar a função C++ _set_new_mode para definir o novo modo do manipulador. O novo modo de manipulador indica se, em caso de falha, realloc deve chamar a nova rotina do manipulador conforme definido por _set_new_handler. Por padrão, realloc não chama a nova rotina do manipulador em caso de falha para alocar memória. Você pode substituir esse comportamento padrão de modo que, quando o _recalloc não aloca memória, realloc chama a nova rotina do manipulador da mesma forma que o operador de new faz quando falhar pela mesma razão. Para substituir o padrão, chame
_set_new_mode(1)
no início do programa, ou no link com o NEWMODE.OBJ.
Quando o aplicativo é vinculado a uma versão de depuração das bibliotecas de tempo de execução C, _recalloc resolve a _recalloc_dbg. Para obter mais informações sobre como o heap é gerenciado durante o processo de depuração, consulte O heap de depuração do CRT.
_recalloc é __declspec(noalias) marcado e __declspec(restrict), o que significa que a função não é garantida para modificar as variáveis globais, e que o ponteiro retornado não possui alias. Para obter mais informações, consulte noalias e restrinja.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_recalloc |
<stdlib.h> e <malloc.h> |
Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.
Equivalência do .NET Framework
Não aplicável. Para chamar a função padrão de C, use PInvoke. Para obter mais informações, consulte Exemplos de chamadas de plataformas.