Öbek atama işlevleri hata ayıklama sürümleri
C çalışma zamanı (CRT) kitaplığı, yığın ayırma işlevlerinin özel Hata Ayıklama sürümlerini içerir. Bu işlevler, sürüm sürümlerine ekli sürümlerle _dbg
aynı adlara sahiptir. Bu makalede, örnek olarak ve _malloc_dbg
kullanılarak malloc
bir CRT işlevinin Yayın sürümü ile _dbg
sürüm arasındaki farklar açıklanmaktadır.
Hata ayıklama derlemelerindeki davranış
Tanımlandığında _DEBUG
, CRT tüm malloc
çağrıları ile _malloc_dbg
eşler. Bu nedenle, hata ayıklarken avantajları elde etmek için yerine malloc
kullanarak _malloc_dbg
kodunuzu yeniden yazmanız gerekmez.
Ancak açıkça çağırmak _malloc_dbg
isteyebilirsiniz. Açıkça çağırmanın _malloc_dbg
bazı ek avantajları vardır:
İzleme
_CLIENT_BLOCK
türü ayırmaları.Kaynak dosyayı ve satır numarasını ayırma isteğinin gerçekleştiği yerde depolama.
Çağrılarınızı malloc
_malloc_dbg
öğesine dönüştürmek istemiyorsanız, ön işlemcinin çevresinde malloc
bir sarmalayıcı kullanmak yerine tüm çağrıları doğrudan ile malloc
eşlemesine _malloc_dbg
neden olan öğesini tanımlayarak _CRTDBG_MAP_ALLOC
kaynak dosya bilgilerini alabilirsiniz.
İstemci bloklarındaki ayrı ayırma türlerini izlemek için, doğrudan çağırmanız _malloc_dbg
ve parametresini blockType
olarak _CLIENT_BLOCK
ayarlamanız gerekir.
Hata ayıklama olmayan derlemelerde davranış
Tanımlanmadığında _DEBUG
, çağrısı malloc
rahatsız olmaz, çağrısına _malloc_dbg
çözümlenir malloc
, tanımı _CRTDBG_MAP_ALLOC
yoksayılır ve ayırma isteğiyle ilgili kaynak dosya bilgileri sağlanmaz. malloc
Blok türü parametresi olmadığından, tür istekleri _CLIENT_BLOCK
standart ayırmalar olarak kabul edilir.