_realloc_dbg
Réaffecte un bloc de mémoire spécifié dans le tas en déplaçant et/ou en redimensionnant le bloc (version Debug uniquement).
void *_realloc_dbg(
void *userData,
size_t newSize,
int blockType,
const char *filename,
int linenumber
);
Paramètres
userData
Pointeur du bloc de mémoire précédemment allouée.newSize
Nouvelle taille demandée pour le bloc réalloué (en octets).blockType
Type demandé du bloc réaffecté : _CLIENT_BLOCK ou _NORMAL_BLOCK.filename
Le pointeur du nom du fichier source qui a demandé l'opération realloc ou NULL.linenumber
Numéro de ligne dans le fichier source où l'opération realloc ou NULL.
Les paramètres filename et linenumber sont uniquement disponibles si _realloc_dbg a été appelé explicitement ou si la constante de préprocesseur _CRTDBG_MAP_ALLOC a été définie.
Valeur de retour
Dans l'achèvement réussi, le retour de cette fonction ou un pointeur vers la partie utilisateur du bloc de mémoire réaffecté, appelle la fonction gestionnaire, ou renvoie NULL. Pour une description complète du comportement de retour, consultez la section Notes suivante. Pour plus d'informations sur la façon dont la nouvelle fonction gestionnaire est utilisée, consultez la fonction ".
Notes
_realloc_dbg est une version Debug de la fonction ". Lorsque _DEBUG n'est pas défini, chaque appel à _realloc_dbg est réduit à un appel à realloc. A la fois realloc et _realloc_dbg redimensionnent un bloc de mémoire dans la pile de base, mais _realloc_dbg s'adapte à plusieurs fonctionnalités de débogage : mémoires tampons de chaque côté de la partie utilisateur du bloc à déterminer des fuites, un paramètre de type de bloc pour suivre des types spécifiques d'allocation, et filename/linenumber pour déterminer l'origine des demandes d'allocation.
_realloc_dbg réalloue le bloc de mémoire spécifié avec légèrement plus d'espace que demandait newSize. newSize peut être supérieure ou inférieure à la taille du bloc de mémoire initialement alloué. L'espace supplémentaire est utilisé par le gestionnaire du tas de débogage pour lier les blocs de mémoire de débogage, pour fournir à l'application les informations d'en-tête du débogage et pour remplacer des mémoires tampons. Une redistribution peut avoir comme conséquence le déplacement du bloc mémoire d'origine vers un endroit de la pile, ainsi qu'en modifiant la taille du bloc de mémoire. Si le bloc de mémoire est déplacé, le contenu du bloc d'origine est remplacée.
_realloc_dbg définit errno à ENOMEM si une allocation de mémoire échoue ou si la quantité de mémoire nécessaire (charge mémoire y compris mentionnée précédemment) dépasse _HEAP_MAXREQ. Pour plus d'informations sur ces codes de retour et autres, consultez errno, _doserrno, _sys_errlist et _sys_nerr.
Pour obtenir des informations sur la façon dont les blocs de mémoire sont alloués, initialisés, et gérés dans la version Debug du tas de base, consultez Détails du tas de débogage CRT. Pour obtenir des informations sur les types de bloc d'allocation et leur utilisation, consultez Types de blocs sur le tas de débogage. Pour obtenir des informations sur les différences entre appeler une fonction standard du tas et sa version Debug dans une version debug d'une application, consultez Versions Debug des fonctions d'allocation du tas.
Configuration requise
Routine |
En-tête requis |
---|---|
_realloc_dbg |
<crtdbg.h> |
Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.
Bibliothèques
Seulement les versions debug des bibliothèques Runtime C.
Exemple
Consultez l'exemple décrit dans la rubrique sous _msize_dbg.
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.