Udostępnij za pośrednictwem


_CrtSetBreakAlloc

Ustawia punkt przerwania na określony obiekt numer zamówienia alokacji (tylko wersja debugowania).

long _CrtSetBreakAlloc( 
   long lBreakAlloc 
);

Parametry

  • lBreakAlloc
    Numer zamówienia alokacji, dla którego ma być ustawiony punkt przerwania.

Wartość zwracana

Zwraca poprzedni obiekt alokacji numeru zamówienia odpowiadającego miał punkt przerwania, ustaw.

Uwagi

_CrtSetBreakAllocpozwala przeprowadzić wykrywania przecieków pamięci podziału w określonym punkcie alokacji pamięci i śledzenie wstecz do pochodzenia żądanie aplikacji.Funkcja używa numer kolejny obiekt alokacji zlecenia przypisane do bloku pamięci, gdy został alokowany na stercie.Gdy _DEBUG nie jest zdefiniowana, wzywa do _CrtSetBreakAlloc są usuwane w czasie wstępnego przetwarzania.

Numer zamówienia obiekt alokacji jest przechowywany w lRequest pola _CrtMemBlockHeader struktury zdefiniowane w Crtdbg.h.Gdy informacje o bloku pamięci zostanie zgłoszona przez jedną z funkcji debugowania zrzutu, numer ten jest ujęty w nawiasy klamrowe, takich jak 36}.

Aby uzyskać więcej informacji dotyczących sposobu _CrtSetBreakAlloc może być używany z innymi funkcjami zarządzania pamięci, zobacz Śledzenia żądań alokacji sterty.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

_CrtSetBreakAlloc

<crtdbg.h>

Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.

Biblioteki

Debug wersje biblioteki uruchomieniowej c tylko.

Przykład

// 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);
        _crtBreakAlloc = 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);
}

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Debugowania procedur