Versions Debug des fonctions d'allocation du tas
La bibliothèque Runtime C contient des versions Debug spéciales des fonctions d'allocation du tas.Ces fonctions utilisent les noms des versions Release, suivis de _dbg.Cette rubrique décrit les différences entre la version Release d'une fonction CRT et la version _dbg à partir d'exemples basés sur malloc et _malloc_dbg.
Lorsque _DEBUG est défini, le CRT mappe tous les appels malloc sur _malloc_dbg.Il est donc inutile de réécrire votre code en utilisant _malloc_dbg à la place de malloc pour bénéficier de ses avantages pendant le 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 voulez pas convertir vos appels malloc à _malloc_dbg, vous pouvez obtenir les informations du fichier source en définissant _CRTDBG_MAP_ALLOC ; le préprocesseur mappera alors tous les appels à malloc directement sur _malloc_dbg au lieu d'utiliser un wrapper autour de malloc.
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.
Lorsque _DEBUG n'est pas défini, les appels à malloc ne sont pas perturbés, les appels à _malloc_dbg sont résolus en malloc, la définition de _CRTDBG_MAP_ALLOC est ignorée et les informations des fichiers sources qui se rapportent à la demande d'allocation ne sont pas fournies.Dans la mesure où malloc ne possède aucun paramètre de type de bloc, les demandes de types _CLIENT_BLOCK sont traitées comme des allocations standard.