_realloc_dbg
Bloğu taşıyarak ve/veya yeniden boyutlandırarak yığındaki belirtilen bellek bloğunu yeniden ayırır (yalnızca hata ayıklama sürümü).
Sözdizimi
void *_realloc_dbg(
void *userData,
size_t newSize,
int blockType,
const char *filename,
int linenumber
);
Parametreler
userData
Önceden ayrılmış bellek bloğunun işaretçisi.
newSize
Yeniden ayrılan blok (bayt) için istenen boyut.
blockType
Yeniden ayrılmış blok için istenen tür: _CLIENT_BLOCK
veya _NORMAL_BLOCK
.
filename
veya NULL
işlemini isteyen kaynak dosyanın adına yönelik realloc
işaretçi.
linenumber
İşlemin istendiği kaynak dosyadaki realloc
satır numarası veya NULL
.
filename
ve linenumber
parametreleri yalnızca açıkça çağrıldığında _realloc_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 realloc
bakın.
Açıklamalar
_realloc_dbg
işlevin realloc
hata ayıklama sürümüdür. Tanımlanmadığında _DEBUG
, çağrısının her _realloc_dbg
biri öğesine yapılan çağrıya realloc
indirgenir. Hem hem de realloc
temel yığındaki bir bellek bloğunu yeniden ayırın, ancak _realloc_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._realloc_dbg
_realloc_dbg
belirtilen bellek bloğunu istenenden newSize
biraz daha fazla alanla yeniden ayırır. newSize
özgün olarak ayrılan bellek bloğunun boyutundan büyük veya daha küçük olabilir. 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. Bellek bloğu taşınırsa, özgün bloğun içeriğinin üzerine yazılır.
_realloc_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 |
---|---|
_realloc_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
Makalenin örneğine _msize_dbg
bakın.