_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ı stateDiff
karşı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.
newState
ve 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. , stateDiff
newState
veya 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_errlist
ve _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 stateDiff
depolar. 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 stateDiff
depolanı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 TRUE
neden _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.