_malloc_dbg
Alloue un bloc de mémoire dans le tas avec l'espace supplémentaire pour un en-tête de débogage et les mémoires tampons de remplacer (version debug uniquement).
void *_malloc_dbg(
size_t size,
int blockType,
const char *filename,
int linenumber
);
Paramètres
size
Taille demandée dans le bloc de mémoire (en octets).blockType
type demandé du bloc de mémoire : _CLIENT_BLOCK ou _NORMAL_BLOCK.filename
Pointeur vers le nom du fichier source qui a demandé l'opération ou NULL d'allocation.linenumber
Numéro de ligne dans le fichier source où l'opération d'allocation a été demandée ou NULL.
Les paramètres d' filename et d' linenumber sont uniquement disponibles si _malloc_dbg a été appelé explicitement ou la constante de préprocesseur de _CRTDBG_MAP_ALLOC a été définie.
Valeur de retour
En cas de réussite, cette fonction retourne un pointeur vers la partie utilisateur du bloc de mémoire alloué, appelle la fonction gestionnaire, ou retourne 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 de malloc .
Notes
_malloc_dbg est une version debug de la fonction de malloc .Lorsque _DEBUG n'est pas défini, chaque appel à _malloc_dbg est réduit à un appel à malloc.malloc et _malloc_dbg allouent un bloc de mémoire dans le tas de base, mais offre d' _malloc_dbg 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/informations d'linenumber pour déterminer l'origine des demandes d'allocation.
_malloc_dbg alloue le bloc de mémoire avec un peu plus d'espace que sizedemandé.L'espace supplémentaire est utilisé par le gestionnaire du tas de débogage pour lier les blocs de mémoire de débogage et pour fournir à l'application les informations d'en-tête du débogage et remplacer des mémoires tampons.Lorsque le bloc est alloué, la partie utilisateur du bloc est remplie avec la valeur 0xCD et chacune des mémoires tampons de remplacer est remplie avec 0xFD.
_malloc_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 ce point et d'autres codes d'erreur, consultez errno, _doserrno, _sys_errlist, et _sys_nerr.
Pour plus d'informations sur la manière dont les blocs de mémoire sont alloués, initialisés, et gérés dans la version debug de tas de base, consultez gestion de la mémoire et le tas de débogage.
Pour plus d'informations sur les types de bloc d'allocation et leur utilisation, consultez types de blocs sur le tas de débogage.
Configuration requise
routine |
en-tête requis |
---|---|
_malloc_dbg |
<crtdbg.h> |
Pour plus d'informations de compatibilité, consultez compatibilité dans l'introduction.
bibliothèques
Versions debug de Bibliothèques runtime C uniquement.
Exemple
Pour un exemple d'utilisation _malloc_dbg, consultez crt_dbg1.
É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é.