_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 NULL
isteyen kaynak dosyanın adına yönelik işaretçi.
linenumber
Kaynak dosyada, ayırma işleminin istendiği veya NULL
satı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 malloc
indirgenir. 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 size
biraz 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_dbg
ENOMEM
, 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_MAXREQ
olarak ayarlarerrno
. Bu ve diğer hata kodları hakkında bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _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.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.
Örnek
nasıl kullanılacağına _malloc_dbg
ilişkin bir örnek için bkz crt_dbg1
. .