Partager via


_recalloc

Combinaison de realloc et de calloc.Réaffecte un tableau dans la mémoire et initialise ses éléments à 0.

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

Paramètres

  • memblock
    Pointeur vers le bloc de mémoire alloué précédemment.

  • num
    Nombre d'éléments.

  • size
    longueur en octets de chaque élément.

Valeur de retour

_recalloc retourne un pointeur d' void (et éventuellement déplacé) au bloc de mémoire réaffecté.

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

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

Les points de valeur de retour à un espace de stockage qui est obligatoirement aligné pour le stockage d'un type d'objet.Pour obtenir un pointeur vers un type autre qu' void, utilisez un cast de type sur la valeur de retour.

Notes

Les modifications de fonction d'recalloc _la taille d'un bloc de mémoire alloué.les points d'argument d' memblock au début du bloc de mémoire.Si memblock est NULL, _recalloc se comporte de la même façon que calloc et alloue un nouveau bloc d' num * octets d' size .chaque élément est initialisé à 0.Si memblock n'est pas NULL, il doit être un pointeur retourné par un appel précédent à calloc, à malloc, ou à realloc.

Étant donné que le nouveau bloc peut être dans un nouvel emplacement de mémoire, le pointeur retourné par le _recalloc se retrouvera le pointeur passé dans l'argument d' memblock .

_recalloc définit errno à 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 cette et d'autres codes d'erreur, consultez errno, _doserrno, _sys_errlist, et _sys_nerr.

appels realloc d'recalloc 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 de échec, realloc est d'appeler la nouvelle routine de gestionnaire comme définie par _set_new_handler.Par défaut, realloc n'appelle pas la nouvelle routine de gestionnaire en cas de échec pour allouer de la mémoire.Vous pouvez substituer ce comportement par défaut afin que, lorsque _recalloc n'allouent pas la mémoire, realloc appelle la nouvelle routine de gestionnaire de la même façon que l'opérateur d' new nécessaire si elle échoue pour la même raison.pour substituer la valeur par défaut, appelez

_set_new_mode(1)

au début du programme, ou le lien avec NEWMODE.OBJ.

Lorsque l'application est liée à une version debug des bibliothèques runtime C, _recalloc le résout vers _recalloc_dbg.Pour plus d'informations sur la façon dont le tas est exécuté pendant le processus de débogage, consultez Le tas de débogage CRT.

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

Configuration requise

routine

en-tête requis

_recalloc

<stdlib.h> et <malloc.h>

Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Voir aussi

Référence

Allocation de mémoire

_recalloc_dbg

_aligned_recalloc

_aligned_offset_recalloc

free

Concepts

Options de lien