_recalloc_dbg
Bir diziyi yeniden ayırır ve öğelerini 0 olarak başlatır (yalnızca hata ayıklama sürümü).
Sözdizimi
void *_recalloc_dbg(
void *userData,
size_t num,
size_t size,
int blockType,
const char *filename,
int linenumber
);
Parametreler
userData
Önceden ayrılmış bellek bloğunun işaretçisi.
number
İstenen bellek bloğu sayısı.
size
Her bellek bloğunun (bayt) boyutu istendi.
blockType
İstenen bellek bloğu türü: _CLIENT_BLOCK
veya _NORMAL_BLOCK
.
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.
filename
Ayırma işlemi veya NULL
istenen kaynak dosyanın adına yönelik işaretçi.
linenumber
Kaynak dosyada, ayırma işleminin istendiği satır numarası veya NULL
.
filename
ve linenumber
parametreleri yalnızca açıkça çağrıldığında _recalloc_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 yeniden 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 _recalloc
bakın.
Açıklamalar
_recalloc_dbg
işlevin _recalloc
hata ayıklama sürümüdür. Tanımlanmadığında _DEBUG
, çağrısının her _recalloc_dbg
biri öğesine yapılan çağrıya _recalloc
indirgenir. Hem hem de _recalloc
temel yığındaki bir bellek bloğunu yeniden ayırın, ancak _recalloc_dbg
birkaç hata ayıklama özelliğini barındırır: 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ı belirlemek için bilgiler._recalloc_dbg
_recalloc_dbg
belirtilen bellek bloğunu, başlangıçta ayrılan bellek bloğunun boyutundan büyük veya daha küçük olabilecek istenen boyuttan (number
* size
) biraz daha fazla alanla yeniden 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. Yeniden konumlandırma, hem özgün bellek bloğunun yığında farklı bir konuma taşınmasına hem de bellek bloğunun boyutunun değiştirilmesine neden olabilir. Bloğun kullanıcı bölümü 0xCD değeriyle doldurulur ve üzerine yazma arabelleklerinin her biri 0xFD ile doldurulur.
_recalloc_dbg
ENOMEM
bir bellek ayırmanın başarısız olması durumunda olarak ayarlanırerrno
; EINVAL
gereken bellek miktarı (daha önce bahsedilen ek yük dahil) aşılırsa _HEAP_MAXREQ
döndürülür. 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ı. 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 |
---|---|
_recalloc_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.