_CrtIsMemoryBlock
Memverifikasi bahwa blok memori tertentu berada di timbunan lokal dan memiliki pengidentifikasi jenis blok tumpukan debug yang valid (hanya versi debug).
Sintaks
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *lineNumber
);
Parameter
userData
Penunjuk ke awal blok memori untuk memverifikasi.
size
Ukuran blok yang ditentukan (dalam byte).
requestNumber
Penunjuk ke nomor alokasi blok atau NULL
.
filename
Penunjuk ke nama file sumber yang meminta blokir atau NULL
.
lineNumber
Penunjuk ke nomor baris dalam file sumber atau NULL
.
Nilai hasil
_CrtIsMemoryBlock
TRUE
mengembalikan jika blok memori yang ditentukan terletak di dalam timbunan lokal dan memiliki pengidentifikasi jenis blok tumpukan debug yang valid; jika tidak, fungsi mengembalikan FALSE
.
Keterangan
Fungsi ini _CrtIsMemoryBlock
memverifikasi bahwa blok memori tertentu terletak di dalam timbunan lokal aplikasi dan memiliki pengidentifikasi jenis blok yang valid. Fungsi ini juga dapat digunakan untuk mendapatkan nomor urutan alokasi objek dan nama file sumber/nomor baris tempat alokasi blok memori awalnya diminta. Nilai non yangNULL
diteruskan dalam requestNumber
parameter , , filename
atau lineNumber
menyebabkan _CrtIsMemoryBlock
untuk mengatur parameter ke nilai di header debug blok memori, jika menemukan blok di timbunan lokal. Jika _DEBUG
tidak ditentukan, panggilan ke _CrtIsMemoryBlock
akan dihapus selama praproscesing.
Jika _CrtIsMemoryBlock
gagal, parameter tersebut mengembalikan FALSE
, dan parameter output diinisialisasi ke nilai default: requestNumber
dan lineNumber
diatur ke 0 dan filename
diatur ke NULL
.
Karena fungsi ini mengembalikan TRUE
atau FALSE
, fungsi ini dapat diteruskan ke salah _ASSERT
satu makro untuk membuat mekanisme penanganan kesalahan debugging dasar. Contoh berikut menyebabkan kegagalan pernyataan jika alamat yang ditentukan tidak terletak di dalam timbunan lokal:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
Untuk informasi selengkapnya tentang bagaimana _CrtIsMemoryBlock
dapat digunakan dengan fungsi debug dan makro lainnya, lihat Makro untuk pelaporan. Untuk informasi tentang bagaimana blok memori dialokasikan, diinisialisasi, dan dikelola dalam versi debug timbunan dasar, lihat detail timbunan debug CRT.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Pustaka
Debug versi pustaka run-time C saja.
Contoh
Lihat contoh untuk artikel ini _CrtIsValidHeapPointer
.