Versions de débogage des fonctions d’allocation du tas
La bibliothèque CRT (C Runtime) contient des versions de débogage spéciales des fonctions d’allocation de tas. Ces fonctions ont les mêmes noms que les versions release avec _dbg
les ajouts. Cet article décrit les différences entre la version Release d’une fonction CRT et la _dbg
version, en utilisant malloc
et _malloc_dbg
en tant qu’exemples.
Comportement dans les builds de débogage
Lorsqu’il _DEBUG
est défini, le CRT mappe tous les malloc
appels à _malloc_dbg
. Par conséquent, vous n’avez pas besoin de réécrire votre code _malloc_dbg
au lieu de recevoir les avantages lors du malloc
débogage.
Vous pouvez cependant appeler _malloc_dbg
de façon explicite. Un appel explicite à _malloc_dbg
présente en outre les avantages suivants :
suivi des allocations de type
_CLIENT_BLOCK
;stockage du fichier source et du numéro de la ligne où la demande d'allocation a été effectuée.
Si vous ne souhaitez pas convertir vos malloc
appels _malloc_dbg
en , vous pouvez obtenir les informations du fichier source en définissant _CRTDBG_MAP_ALLOC
, ce qui entraîne le mappage direct de tous les appels à malloc
_malloc_dbg
tous les appels au lieu de s’appuyer sur un wrapper autour malloc
de .
Pour effectuer le suivi des différents types d'allocations dans les blocs client, vous devez appeler _malloc_dbg
directement et affecter au paramètre blockType
la valeur _CLIENT_BLOCK
.
Comportement dans les builds sans débogage
Lorsqu’il _DEBUG
n’est pas défini, les appels à malloc
ne sont pas dérangés, les appels à _malloc_dbg
résoudre sont résolus malloc
en , la définition d’est _CRTDBG_MAP_ALLOC
ignorée et les informations de fichier source relatives à la demande d’allocation ne sont pas fournies. Comme malloc
n’a pas de paramètre de type de bloc, les demandes de _CLIENT_BLOCK
types sont traitées comme des allocations standard.