Aracılığıyla paylaş


_CrtMemDifference

İki bellek durumlarını karşılaştırır ve farklarını döndürür (yalnızca hata ayıklama sürümü).

Sözdizimi

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

Parametreler

stateDiff
İki bellek durumu (döndürülen) arasındaki farkları depolamak için kullanılan bir _CrtMemState yapı işaretçisi.

oldState
Önceki bir bellek durumuna (_CrtMemState yapı) yönelik işaretçi.

newState
Sonraki bir bellek durumuna (_CrtMemState yapı) işaret eden bir işaretçi.

Dönüş değeri

Bellek durumlarındaki fark önemliyse, _CrtMemDifference döndürür TRUE. Aksi takdirde işlevi döndürür FALSE.

Açıklamalar

İşlev, _CrtMemDifference bellek sızıntılarını ve newState diğer bellek sorunlarını algılamak için uygulama tarafından kullanılabilen farklarını stateDiffkarşılaştırır oldState ve içinde depolar. Tanımlanmadığında _DEBUG , çağrısı _CrtMemDifference ön işleme sırasında kaldırılır.

newStateve oldState her birinin içinde tanımlanan crtdbg.h_CrtMemCheckpoint ve çağrısından _CrtMemDifferenceönce doldurulan geçerli bir _CrtMemState yapı işaretçisi olması gerekir. stateDiff daha önce ayrılmış bir yapı örneğine _CrtMemState işaretçi olmalıdır. , stateDiffnewStateveya oldState iseNULL, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, errno, _doserrno, _sys_errlistve _sys_nerr olarak ayarlanır EINVAL ve işlevi döndürür FALSE.

_CrtMemDifference_CrtMemState içindeki blokların oldState alan değerlerini içindekilerle newState karşılaştırır ve sonucu içinde stateDiffdepolar. Ayrılan blok türlerinin sayısı veya her tür için ayrılan blokların toplam sayısı iki bellek durumu arasında farklılık gösterdiğinde, durumlardaki fark önemli kabul edilir. İki durum için bir kerede ayrılan en büyük tutar ile iki durum için toplam ayırmalar arasındaki fark da içinde stateDiffdepolanır.

Varsayılan olarak, iç C çalışma zamanı blokları (_CRT_BLOCK) bellek durumu işlemlerine dahil değildir. _CrtSetDbgFlag işlevi, bu blokları sızıntı algılama ve diğer bellek durumu işlemlerine dahil etmek üzere bitini _crtDbgFlag açmak _CRTDBG_CHECK_CRT_DF için kullanılabilir. Serbest bellek blokları (_FREE_BLOCK) döndürülmeye TRUEneden _CrtMemDifference olmaz.

Yığın durumu işlevleri ve _CrtMemState yapısı hakkında daha fazla bilgi için bkz . Yığın durumu raporlama işlevleri. 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 İsteğe bağlı üst bilgi
_CrtMemDifference <crtdbg.h> <errno.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.

Ayrıca bkz.

Hata ayıklama yordamları
_crtDbgFlag