_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 _CrtMemDifference
oldState
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
, , newState
atau 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk