_realloc_dbg
Réalloue un bloc de mémoire spécifié dans le tas en déplaçant et/ou redimensionnant le bloc (version de débogage uniquement).
Syntaxe
void *_realloc_dbg(
void *userData,
size_t newSize,
int blockType,
const char *filename,
int linenumber
);
Paramètres
userData
Pointeur vers le bloc de mémoire précédemment alloué.
newSize
Taille demandée pour le bloc réalloué (octets).
blockType
Type demandée pour le bloc réalloué : _CLIENT_BLOCK
ou _NORMAL_BLOCK
.
filename
Pointeur vers le 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
a été demandée ou NULL
.
Les filename
paramètres et linenumber
les paramètres sont disponibles uniquement lorsqu’ils ont été appelés explicitement ou si _realloc_dbg
la _CRTDBG_MAP_ALLOC
constante de préprocesseur a été définie.
Valeur retournée
Une fois l’achèvement réussi, cette fonction retourne un pointeur vers la partie utilisateur du bloc de mémoire réaffecté, appelle la nouvelle fonction de gestionnaire ou retourne NULL
. Pour obtenir une description complète du comportement de retour, voir la section Notes suivante. Pour plus d’informations sur l’utilisation de la nouvelle fonction de gestionnaire, consultez la realloc
fonction.
Notes
_realloc_dbg
est une version de débogage de la realloc
fonction. Lorsqu’il _DEBUG
n’est pas défini, chaque appel à est _realloc_dbg
réduit à un appel à realloc
. realloc
et _realloc_dbg
réallouent toutes deux un bloc de mémoire dans le tas de base, mais _realloc_dbg
gère plusieurs fonctionnalités de débogage : des mémoires tampons de chaque côté de la partie utilisateur du bloc pour vérifier la présence de fuites, un paramètre de type de bloc pour effectuer le suivi de types d’allocation spécifiques et des informations filename
/linenumber
pour déterminer l’origine des demandes d’allocation.
_realloc_dbg
réalloue le bloc de mémoire spécifié avec un peu plus d'espace que la valeur newSize
demandée. newSize
peut être inférieure ou supérieure à la taille du bloc de mémoire alloué initialement. L’espace supplémentaire est utilisé par le gestionnaire de tas de débogage pour lier les blocs de mémoire de débogage et fournir à l’application des informations d’en-tête de débogage et remplacer les mémoires tampons. La réaffectation peut entraîner le déplacement du bloc de mémoire d’origine vers un autre emplacement dans le tas et la modification de la taille du bloc de mémoire. Si le bloc de mémoire est déplacé, son contenu d'origine est remplacé.
_realloc_dbg
affecte la valeur errno
à ENOMEM
si une allocation de mémoire échoue ou si la quantité de mémoire nécessaire (y compris la surcharge mentionnée précédemment) dépasse _HEAP_MAXREQ
. Pour plus d’informations sur ce code et d’autres codes d’erreur, consultez , , _sys_errlist
_doserrno
et _sys_nerr
.errno
Pour plus d’informations sur la façon dont les blocs de mémoire sont alloués, initialisés et gérés dans la version de débogage du tas de base, consultez les détails du tas de débogage CRT. Pour plus d’informations sur les types de blocs d’allocation et leur utilisation, consultez Types de blocs sur le tas de débogage. Pour plus d’informations sur les différences entre les fonctions de tas standard et les versions de débogage, consultez Les versions de débogage des fonctions d’allocation de tas.
Spécifications
Routine | En-tête requis |
---|---|
_realloc_dbg |
<crtdbg.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Bibliothèques
Uniquement les versions de débogage des bibliothèques Runtime C.
Exemple
Consultez l’exemple de l’article _msize_dbg
.