Partager via


_recalloc

Combinaison de realloc et calloc. Réalloue un tableau en mémoire et initialise ses éléments à 0.

Syntaxe

void *_recalloc(
   void *memblock
   size_t num,
   size_t size
);

Paramètres

memblock
Pointeur désignant le bloc de mémoire précédemment alloué.

number
Nombre d'éléments.

size
Longueur en octets de chaque élément.

Valeur retournée

_recalloc retourne un pointeur void vers le bloc de mémoire réalloué (et éventuellement déplacé).

S’il n’y a pas suffisamment de mémoire disponible pour étendre le bloc à la taille donnée, le bloc d’origine reste inchangé et NULL est retourné.

Si la taille demandée est égale à zéro, le bloc désigné par memblock est libéré ; la valeur de retour est NULL, et memblock pointe vers un bloc libéré.

La valeur de retour pointe vers un espace de stockage adapté au stockage de n’importe quel type d’objet. Pour obtenir un pointeur vers un autre type que void, utilisez un cast de type sur la valeur de retour.

Notes

La fonction _recalloc modifie la taille d’un bloc de mémoire alloué. L’argument memblock pointe vers le début du bloc de mémoire. Si memblock a la valeur NULL, _recalloc se comporte de la même façon que calloc et alloue un nouveau bloc de number * size octets. Chaque élément est initialisé à 0. Si memblock ce n’est pas NULLle cas, il doit s’agir d’un pointeur retourné par un appel précédent à calloc, mallocou realloc.

Étant donné que le nouveau bloc peut se trouver dans un nouvel emplacement de mémoire, le pointeur retourné par _recalloc n’est pas garanti comme pointeur passé par l’argument memblock .

_recalloc affecte à errno la valeur ENOMEM si l’allocation de mémoire échoue ou si la quantité de mémoire demandée dépasse _HEAP_MAXREQ. Pour plus d’informations sur ce code et d’autres codes d’erreur, consultez , , _sys_errlist_doserrnoet _sys_nerr.errno

recalloc appelle realloc pour utiliser la fonction C++ _set_new_mode pour définir le nouveau mode de gestionnaire. Le nouveau mode de gestionnaire indique si, en cas d'échec, realloc doit appeler la nouvelle routine de gestionnaire, telle qu'elle est définie par _set_new_handler. Par défaut, realloc n’appelle pas la nouvelle routine de gestionnaire en cas d’échec de l’allocation de mémoire. Vous pouvez remplacer ce comportement par défaut de sorte que, quand __recalloc ne parvient pas à allouer de la mémoire, realloc appelle la routine de nouveau gestionnaire de la même façon que l’opérateur new quand il échoue pour la même raison. Pour remplacer la valeur par défaut, appelez

_set_new_mode(1);

au début de votre programme, ou créez un lien avec NEWMODE.OBJ.

Lorsque l’application est liée à une version de débogage des bibliothèques runtime C, _recalloc la résolution est _recalloc_dbg. Pour plus d’informations sur la gestion du tas pendant le processus de débogage, consultez le tas de débogage CRT.

_recalloc est marqué __declspec(noalias) et __declspec(restrict), ce qui signifie que la fonction est garantie de ne pas modifier les variables globales et que le pointeur retourné n’est pas alias. Pour plus d’informations, consultez noalias et restrict.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
_recalloc <stdlib.h> et <malloc.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Voir aussi

Allocation de mémoire
_recalloc_dbg
_aligned_recalloc
_aligned_offset_recalloc
free
Options de lien