Partager via


_CrtSetBreakAlloc

Définit un point d'arrêt sur un numéro d'ordre d'allocation d'objet spécifié (version de débogage uniquement).

long _CrtSetBreakAlloc(     long lBreakAlloc   );

Paramètres

  • lBreakAlloc
    Numéro d'ordre d'allocation pour lequel le point d'arrêt est défini.

Valeur de retour

Retourne le numéro d'ordre d'allocation d'objet précédent qui avait un point d'arrêt défini.

Notes

_CrtSetBreakAlloc permet à une application de détecter une fuite de mémoire en s'arrêtant à un point d'allocation de mémoire spécifique et en remontant jusqu'à l'origine de la demande. La fonction utilise le numéro d'ordre d'allocation d'objet séquentiel assigné au bloc de mémoire au moment où il a été alloué dans le tas. Quand _DEBUG n'est pas défini, les appels à _CrtSetBreakAlloc sont supprimés pendant le prétraitement.

Le numéro d'ordre d'allocation d'objet est stocké dans le champ lRequest de la structure _CrtMemBlockHeader, définie dans Crtdbg.h. Quand les informations sur un bloc de mémoire sont rapportées par l'une des fonctions de vidage du débogage, ce numéro est placé entre accolades (par exemple, « {36} »).

Pour plus d'informations sur l'utilisation de _CrtSetBreakAlloc avec d'autres fonctions de gestion de mémoire, voir Suivre les demandes d'allocation du tas. 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, voir Détails du tas de débogage CRT.

Configuration requise

Routine

En-tête requis

_CrtSetBreakAlloc

<crtdbg.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité dans l'introduction.

Bibliothèques

Uniquement les versions de débogage des bibliothèques Runtime C.

Exemple

// crt_setbrkal.c
// compile with: -D_DEBUG /MTd -Od -Zi -W3 /c /link -verbose:lib -debug

/*
 * In this program, a call is made to the _CrtSetBreakAlloc routine
 * to verify that the debugger halts program execution when it reaches
 * a specified allocation number.
 */

#include <malloc.h>
#include <crtdbg.h>

int main( )
{
        long allocReqNum;
        char *my_pointer;

        /* 
         * Allocate "my_pointer" for the first
         * time and ensure that it gets allocated correctly
         */
        my_pointer = malloc(10);
        _CrtIsMemoryBlock(my_pointer, 10, &allocReqNum, NULL, NULL);

        /* 
         * Set a breakpoint on the allocation request
         * number for "my_pointer"
         */
        _CrtSetBreakAlloc(allocReqNum+2);

        /* 
         * Alternate freeing and reallocating "my_pointer"
         * to verify that the debugger halts program execution
         * when it reaches the allocation request
         */
        free(my_pointer);
        my_pointer = malloc(10);
        free(my_pointer);
        my_pointer = malloc(10);
        free(my_pointer);
}

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, voir Exemples d'appel de plateforme.

Voir aussi

Référence

Routines de débogage