Aracılığıyla paylaş


_CrtSetBreakAlloc

Belirtilen nesne ayırma sırası numarasında bir kesme noktası ayarlar (yalnızca hata ayıklama sürümü).

Sözdizimi

long _CrtSetBreakAlloc(
   long lBreakAlloc
);

Parametreler

lBreakAlloc
Kesme noktasının ayarlanacağı ayırma siparişi numarası.

Dönüş değeri

Kesme noktası ayarlanmış önceki nesne ayırma sırası numarasını döndürür.

Açıklamalar

_CrtSetBreakAlloc bir uygulamanın belirli bir bellek ayırma noktasında hataya neden olarak bellek sızıntısı algılaması gerçekleştirmesine ve isteğin kaynağına geri dönmesine izin verir. İşlev, yığında ayrıldığında bellek bloğuna atanan sıralı nesne ayırma sırası numarasını kullanır. Tanımlanmadığında _DEBUG , çağrısı _CrtSetBreakAlloc ön işleme sırasında kaldırılır.

Nesne ayırma sipariş numarası, Crtdbg.h dosyasında tanımlanan yapının alanında _CrtMemBlockHeader depolanırlRequest. Bir bellek bloğu hakkındaki bilgiler hata ayıklama dökümü işlevlerinden biri tarafından bildirildiğinde, bu sayı gibi {36}küme ayraçları içine alınır.

Diğer bellek yönetimi işlevleriyle nasıl _CrtSetBreakAlloc kullanılabildiği hakkında daha fazla bilgi için bkz . Yığın ayırma isteklerini izleme. Temel yığının hata ayıklama sürümünde bellek bloklarının nasıl ayrıldığı, başlatıldığı ve yönetildiği hakkında daha fazla bilgi için bkz . CRT hata ayıklama yığını ayrıntıları.

Gereksinimler

Yordam Gerekli başlık
_CrtSetBreakAlloc <crtdbg.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Kitaplıklar

Yalnızca C çalışma zamanı kitaplıklarının sürümlerinde hata ayıklama.

Örnek

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

Ayrıca bkz.

Hata ayıklama yordamları