_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

_CrtIsMemoryBlockTRUE 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 requestNumberparameter , , filenameatau 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 .

Baca juga

Rutinitas debug