Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout
and
div
eof
not
or
xor
Développer Réduire
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

_recalloc

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

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

memblock

Pointeur vers un bloc de mémoire précédemment alloué.

num

Nombre d'éléments

size

Longueur en octets de chaque élément.

_recalloc retourne un pointeur void sur le bloc mémoire realloué (et éventuellement déplacé).

S'il n'y a pas assez de mémoire pour développer le bloc à la taille spécifiée, le bloc d'origine reste inchangé, et NULL est retourné.

Si la taille requise est zéro, le bloc référencé par memblock est récupéré ; la valeur de retour est NULL, et memblock est laissé, le curseur vers un bloc libéré.

Les valeur de retour pointent vers un espace de stockage, qui est garanti d'être aligné correctement pour le stockage de n'importe quel type d'objet. Pour obtenir un pointeur sur un type autre qu'un void, utilisez un cast de type sur la valeur de retour.

La fonction recalloc change la taille d'un bloc de mémoire alloué. L'argument memblock pointe au début du bloc de mémoire. Si memblock est NULL, recalloc se comporte de la même manière que calloc et alloue un nouveau bloc d'octets de dimension num* size. Chaque élément est initialisée à 0. Si memblock n'est pas NULL, ce doit être un pointeur retourné par un appel précédent à calloc,malloc, ou à realloc.

Étant donné que le nouveau bloc peut se trouver dans un emplacement de mémoire, le pointeur retourné par recalloc n'est pas garanti être un pointeur passé via 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 ceci et sur les codes d'erreurs, consultez errno, _doserrno, _sys_errlist et _sys_nerr.

recalloc appelle realloc_set_new_mode pour utiliser la fonction C++ pour définir le nouveau mode gestionnaire. Le nouveau mode de gestionnaire indique si, en cas de échec, realloc doit appeler la nouvelle routine du gestionnaire comme définit par _set_new_handler. Par défaut, realloc n'appelle pas la nouvelle routine de gestionnaire en cas de défaillance pour allouer de la mémoire. Vous pouvez substituer ce comportement par défaut afin que, lorsque _recalloc ne réussit pas à allouer la mémoire, realloc appelle la nouvelle routine de gestionnaire de la même manière que l'opérateur new lorsqu'il échoue pour la même raison. Pour substituer la valeur par défaut, appelez

_set_new_mode(1)

tôt dans votre programme, ou créez un lien avec NEWMODE.OBJ (consultez ).

Lorsque l'application est liée à une version debug des bibliothèques Runtime C, recalloc est résolu en _recalloc_dbg. Pour plus d'informations sur la gestion du tas pendant le processus de débogage, consultez The CRT Debug Heap.

_recalloc est marqué __declspec(noalias) et __declspec(restrict) ; cela signifie que la fonction ne modifiera pas de variables globales et que le pointeur retourné n'est pas sous la forme d'un alias. Pour plus d'informations, consultez noalias et restrict.

Routine

En-tête requis

_recalloc

<stdlib.h> et <malloc.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft