Versions Debug des fonctions d'allocation du tas

 

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

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.

Techniques de débogage CRT

Afficher: