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