Sdílet prostřednictvím


_CrtSetBreakAlloc

Nastaví zarážku číslo objednávky přidělení zadaného objektu (pouze ladicí verze).

long _CrtSetBreakAlloc( 
   long lBreakAlloc 
);

Parametry

  • lBreakAlloc
    Přidělení číslo objednávky, pro který chcete nastavit bod přerušení.

Vrácená hodnota

Vrátí číslo přidělení zakázky předchozí objekt měl nastavit zarážku.

Poznámky

_CrtSetBreakAllocumožňuje aplikaci provést rozdělení na určitém místě přidělení paměti a zpět sledování původu žádost detekce nevrácení paměti.Funkce používá číslo pořadí přidělení sekvenční objektu přiřazen blok paměti při byla přidělena haldy.Při _DEBUG není definována, volání do _CrtSetBreakAlloc jsou odebrány při úpravě před zpracováním.

Číslo objektu přidělení zakázky je uložen v lRequest pole _CrtMemBlockHeader struktury, které jsou definovány v Crtdbg.h.Při jedné z funkcí výpis ladění je vykazován informace o blok paměti, toto číslo je uzavřena ve složených závorkách, například {36}.

Další informace o _CrtSetBreakAlloc lze použít s dalšími funkcemi pro správu paměti, viz Sledování žádostí o přidělení haldy.

Požadavky

Rutina

Požadované záhlaví

_CrtSetBreakAlloc

<crtdbg.h>

Další informace o kompatibilitě v tématu Compatibility v úvodu.

Knihovny

Ladění verze C Runtime knihovny pouze.

Příklad

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

Ekvivalent v rozhraní .NET Framework

Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Viz také

Referenční dokumentace

Ladění rutin