_CrtIsMemoryBlock
Belirtilen bellek bloğunun yerel yığında olduğunu ve geçerli bir hata ayıklama öbeği blok türü tanımlayıcısına sahip olduğunu doğrular (yalnızca hata ayıklama sürümü).
Sözdizimi
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *lineNumber
);
Parametreler
userData
Doğrulanması gereken bellek bloğunun başlangıcına işaret eden işaretçi.
size
Belirtilen bloğun boyutu (bayt cinsinden).
requestNumber
bloğunun veya NULL
ayırma numarasının işaretçisi.
filename
veya NULL
bloğunu isteyen kaynak dosyanın adına işaret eden işaretçi.
lineNumber
Kaynak dosyadaki veya NULL
içindeki satır numarasının işaretçisi.
Dönüş değeri
_CrtIsMemoryBlock
belirtilen bellek bloğu yerel yığın içinde yer alıyorsa ve geçerli bir hata ayıklama yığını blok türü tanımlayıcısına sahipse döndürür TRUE
; aksi takdirde işlev döndürür FALSE
.
Açıklamalar
işlevi, _CrtIsMemoryBlock
belirtilen bir bellek bloğunun uygulamanın yerel yığınında bulunduğunu ve geçerli bir blok türü tanımlayıcısına sahip olduğunu doğrular. Bu işlev, nesne ayırma sırası numarasını ve bellek bloğu ayırmanın ilk olarak istendiği kaynak dosya adını/satır numarasını almak için de kullanılabilir. , filename
veya parametresinde geçirilen değer olmayanNULL
bir requestNumber
değer, yerel yığındaki bloğu bulursa, parametrenin bellek bloğunun hata ayıklama üst bilgisindeki değere ayarlanmasına neden olur _CrtIsMemoryBlock
lineNumber
. Tanımlanmadığında _DEBUG
, çağrısı _CrtIsMemoryBlock
ön işleme sırasında kaldırılır.
_CrtIsMemoryBlock
Başarısız olursa, döndürür FALSE
ve çıkış parametreleri varsayılan değerlere başlatılır: requestNumber
ve lineNumber
0 olarak ayarlanır ve filename
olarak NULL
ayarlanır.
Bu işlev veya FALSE
döndürdüğündenTRUE
, temel hata ayıklama hata işleme mekanizması oluşturmak için makrolardan birine _ASSERT
geçirilebilir. Aşağıdaki örnek, belirtilen adres yerel yığında yer almıyorsa onay hatasına neden olur:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
Diğer hata ayıklama işlevleri ve makrolarla nasıl _CrtIsMemoryBlock
kullanabileceğinizle ilgili daha fazla bilgi için bkz . Raporlama için makrolar. 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ğini öğrenmek için bkz . CRT hata ayıklama yığını ayrıntıları.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
_CrtIsMemoryBlock |
<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
Makalenin örneğine _CrtIsValidHeapPointer
bakın.