_CrtMemDifference

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

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

Parametreler

  • stateDiff
    İki bellek durumu (döndürülen) arasındaki farklılıkları depolamak için kullanılan _CrtMemState yapısına yönelik işaretçi.

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

  • newState
    Daha sonraki bir bellek durumuna yönelik işaretçi (_CrtMemState yapısı).

Dönüş Değeri

Bellek durumları önemli ölçüde farklıysa, _CrtMemDifference TRUE değerini döndürür.Aksi takdirde işlev FALSE değerini döndürür.

Notlar

_CrtMemDifference işlevi oldState ve newState değerlerini karşılaştırır ve bunların farkını, daha sonra uygulama tarafından bellek sızıntılarını ve diğer bellek sorunlarını algılamada kullanılmak üzere stateDiff içinde depolar._DEBUG tanımlı olmadığında _CrtMemDifference'e çağrılar ön işleme sırasında kaldırılır.

newState ve oldState seçeneklerinden her birinin _CrtMemState yapısı için geçerli işaretçi olması gerekir; _CrtMemCheckpoint ile, _CrtMemDifference aranmadan önce Crtdbg.h öğesinde doldurularak tanımlanmalıdır.stateDiff, daha önce ayrılmış bir _CrtMemState yapısı örneğine bir işaretçi olmalıdır.stateDiff, newState veya oldState öğesi NULL ise, Parametre Doğrulamaiçinde açıklandığı şekilde geçersiz parametre işleyicisi çağrılır.Yürütmenin devam etmesine izin verilirse, errno, _doserrno, _sys_errlist, and _sys_nerr öğesi EINVAL olarak ayarlanır ve işlev FALSE döndürür.

_CrtMemDifference, oldState öğesindeki blokların _CrtMemState alanı değerlerini newState öğesindekilerle karşılaştırır ve sonucu stateDiff öğesinde depolar.Tahsis edilen blok türü sayısı ya da her bir tür için tahsis edilen toplam blok sayısı, iki bellek durumu arasında farklılık gösterdiğinde, durumların önemli ölçüde farklı olduğu söylenir.İki durum için bir kerede ayrılan en büyük miktar arasındaki fark ile iki durum için ayrılan toplam miktar arasındaki fark da ayrıca stateDiff içinde depolanır.

Varsayılan olarak, iç C çalışma zamanı blokları (_CRT_BLOCK) bellek durumu işlemlerinde dahil değildir._CrtSetDbgFlag işlevi, _crtDbgFlag bayrağının _CRTDBG_CHECK_CRT_DF bitini, bu blokları sızıntı algılama ve diğer bellek işlemlerine dahil etmek üzere açmak için kullanılabilir.Bırakılmış bellek blokları (_FREE_BLOCK), _CrtMemDifference öğesinin TRUE döndürmesine neden olmaz.

Yığın durumu işlevleri ve _CrtMemState yapısı hakkında bilgi için, bkz. Yığın Durum Raporlama İşlevleri.Bellek bloklarının taban yığının hata ayıklama sürümünde nasıl ayrıldığı, başlatıldığı ve yönetildiği hakkında bilgi için, bkz. CRT Hata Ayıklama Öbeği 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, Giriş'teki Uyumluluk başlığına bakın.

Kitaplıklar: Yalnızca CRT Kitaplık Özellikleri hata giderme sürümü.

Örnek

Bkz: crt_dbg1

.NET Framework Eşdeğeri

Uygulanamaz. Standart C işlevini çağırmak için PInvoke kullanın. Daha fazla bilgi için bkz. Platform Çağırma Örnekleri.

Ayrıca bkz.

Başvuru

Hata Ayıklama Yordamları

_crtDbgFlag