Aracılığıyla paylaş


_malloc_dbg

Yığında hata ayıklama üst bilgisi için fazladan alan içeren bir bellek bloğu ayırır ve arabelleklerin üzerine yazar (yalnızca hata ayıklama sürümü).

Sözdizimi

void *_malloc_dbg(
   size_t size,
   int blockType,
   const char *filename,
   int linenumber
);

Parametreler

size
Bellek bloğunun boyutu istendi (bayt cinsinden).

blockType
İstenen bellek bloğu türü: _CLIENT_BLOCK veya _NORMAL_BLOCK.

filename
Veya ayırma işlemini NULListeyen kaynak dosyanın adına yönelik işaretçi.

linenumber
Kaynak dosyada, ayırma işleminin istendiği veya NULLsatır numarası.

filename ve linenumber parametreleri yalnızca açıkça çağrıldığında _malloc_dbg veya önişlemci sabiti _CRTDBG_MAP_ALLOC tanımlandığında kullanılabilir.

Dönüş değeri

Başarıyla tamamlandığında, bu işlev ayrılan bellek bloğunun kullanıcı bölümüne bir işaretçi döndürür, yeni işleyici işlevini çağırır veya döndürür NULL. Dönüş davranışının tam açıklaması için aşağıdaki Açıklamalar bölümüne bakın. Yeni işleyici işlevinin nasıl kullanıldığı hakkında daha fazla bilgi için işleve malloc bakın.

Açıklamalar

_malloc_dbg işlevin malloc hata ayıklama sürümüdür. Tanımlanmadığında _DEBUG , çağrısının her _malloc_dbg biri öğesine yapılan çağrıya mallocindirgenir. Hem hem de malloc temel yığında bir bellek bloğu ayırın, ancak _malloc_dbg birkaç hata ayıklama özelliği sunar: sızıntıları test etmek için bloğun kullanıcı bölümünün her iki tarafındaki arabellekler, belirli ayırma türlerini izlemek için bir blok türü parametresi ve filename/linenumber ayırma isteklerinin kaynağını belirlemeye yönelik bilgiler._malloc_dbg

_malloc_dbg bellek bloğunu istenenden sizebiraz daha fazla alanla ayırır. Ek alan, hata ayıklama yığın yöneticisi tarafından hata ayıklama bellek bloklarını bağlamak ve uygulamaya hata ayıklama üst bilgisi bilgileri sağlamak ve arabelleklerin üzerine yazmak için kullanılır. Blok ayrıldığında, bloğun kullanıcı bölümü 0xCD değeriyle doldurulur ve üzerine yazma arabelleklerinin her biri 0xFD ile doldurulur.

_malloc_dbgENOMEM, bellek ayırmanın başarısız olup olmadığını veya gereken bellek miktarının (daha önce bahsedilen ek yük dahil) aşılıp aşılmadığını _HEAP_MAXREQolarak ayarlarerrno. Bu ve diğer hata kodları hakkında bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

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ı. Ayırma bloğu türleri ve bunların nasıl kullanıldığı hakkında bilgi için bkz . Hata ayıklama yığınındaki blok türleri. Standart yığın işlevleri ile hata ayıklama sürümleri arasındaki farklar hakkında bilgi için bkz . Yığın ayırma işlevlerinin sürümlerinde hata ayıklama.

Gereksinimler

Yordam Gerekli başlık
_malloc_dbg <Crtdbg>

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.

Örnek

nasıl kullanılacağına _malloc_dbgilişkin bir örnek için bkz crt_dbg1. .

Ayrıca bkz.

Hata ayıklama yordamları
malloc
_calloc_dbg