_CrtMemDifference

Membandingkan dua status memori dan mengembalikan perbedaannya (hanya versi debug).

Sintaks

int _CrtMemDifference(
   _CrtMemState *stateDiff,
   const _CrtMemState *oldState,
   const _CrtMemState *newState
);

Parameter

stateDiff
Penunjuk ke _CrtMemState struktur yang digunakan untuk menyimpan perbedaan antara dua status memori (dikembalikan).

oldState
Penunjuk ke status memori (_CrtMemState struktur) sebelumnya.

newState
Penunjuk ke status memori (_CrtMemState struktur) yang lebih baru.

Nilai hasil

Jika perbedaan dalam status memori signifikan, _CrtMemDifference mengembalikan TRUE. Sebaliknya, fungsi ini akan menampilkan FALSE.

Keterangan

Fungsi ini membandingkan _CrtMemDifferenceoldState dan newState dan menyimpan perbedaannya dalam stateDiff, yang kemudian dapat digunakan oleh aplikasi untuk mendeteksi kebocoran memori dan masalah memori lainnya. Jika _DEBUG tidak ditentukan, panggilan ke _CrtMemDifference akan dihapus selama praproscesing.

newState dan oldState masing-masing harus menjadi penunjuk yang _CrtMemState valid ke struktur, yang didefinisikan dalam crtdbg.h, yang _CrtMemCheckpoint telah diisi sebelum panggilan ke _CrtMemDifference. stateDiff harus menjadi penunjuk ke instans struktur yang _CrtMemState dialokasikan sebelumnya. Jika stateDiff, , newStateatau oldState adalah NULL, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, , errno, _sys_errlist_doserrno, dan _sys_nerr diatur ke EINVAL dan fungsi mengembalikan .FALSE

_CrtMemDifference membandingkan _CrtMemState nilai bidang blok dengan oldState yang ada di newState dan menyimpan hasilnya di stateDiff. Ketika jumlah jenis blok yang dialokasikan atau jumlah total blok yang dialokasikan untuk setiap jenis berbeda antara dua status memori, perbedaan status dianggap signifikan. Perbedaan antara jumlah terbesar yang pernah dialokasikan sekaligus untuk dua negara bagian dan perbedaan antara total alokasi untuk dua negara bagian juga disimpan dalam stateDiff.

Secara default, blok run-time C internal (_CRT_BLOCK) tidak disertakan dalam operasi status memori. Fungsi ini _CrtSetDbgFlag dapat digunakan untuk mengaktifkan _CRTDBG_CHECK_CRT_DF bit _crtDbgFlag untuk menyertakan blok ini dalam deteksi kebocoran dan operasi status memori lainnya. Blok memori yang dibebeskan (_FREE_BLOCK) tidak menyebabkan _CrtMemDifference pengembalian TRUE.

Untuk informasi selengkapnya tentang fungsi status timbunan dan _CrtMemState struktur, lihat Fungsi pelaporan status timbunan. 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 Header opsional
_CrtMemDifference <crtdbg.h> <errno.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Pustaka: Debug versi pustaka runtime C saja.

Baca juga

Rutinitas debug
_crtDbgFlag