Aracılığıyla paylaş


_recalloc

ve reallocbirleşimicalloc. Bir diziyi bellekte yeniden ayırır ve öğelerini 0 olarak başlatır.

Sözdizimi

void *_recalloc(
   void *memblock,
   size_t num,
   size_t size
);

Parametreler

memblock
Önceden ayrılmış bellek bloğu işaretçisi.

number
Öğe sayısı.

size
Her öğenin bayt cinsinden uzunluğu.

Dönüş değeri

_recalloc yeniden ayrılan (ve büyük olasılıkla taşınan) bellek bloğuna bir void işaretçi döndürür.

Bloğu verilen boyuta genişletmek için yeterli kullanılabilir bellek yoksa, özgün blok değiştirilmeden bırakılır ve NULL döndürülür.

İstenen boyut sıfırsa, tarafından memblock işaret edilen blok serbest bırakılır; dönüş değeri olur NULLve memblock serbest bırakılmış bir bloğu işaret eder.

Dönüş değeri, herhangi bir nesne türünün depolaması için uygun olan bir depolama alanını gösterir. dışında voidbir türe işaretçi almak için dönüş değerinde tür tür ataması kullanın.

Açıklamalar

İşlev, _recalloc ayrılan bellek bloğunun boyutunu değiştirir. memblock Bağımsız değişken, bellek bloğunun başlangıcını gösterir. isememblock, ile aynı şekilde davranır ve yeni bir bayt bloğuNULL_recalloccallocayırır.number * size Her öğe 0 olarak başlatılır. değilse memblockNULL, önceki bir , veya callocçağrısı mallocrealloctarafından döndürülen bir işaretçi olmalıdır.

Yeni blok yeni bir bellek konumunda olabileceğinden, tarafından _recalloc döndürülen işaretçinin bağımsız değişkenden memblock geçirilen işaretçi olması garanti değildir.

_recalloc errno, bellek ayırmanın başarısız olup olmadığını veya istenen bellek miktarının aşılıp aşılmadığını ENOMEMolarak ayarlar_HEAP_MAXREQ. Bu ve diğer hata kodları hakkında bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

recallocyeni işleyici modunu ayarlamak için C++ realloc işlevini kullanmak için çağrılar_set_new_mode. Yeni işleyici modu, hata realloc durumunda tarafından _set_new_handlerayarlanan yeni işleyici yordamının çağrılıp çağrılmayacağını belirtir. Varsayılan olarak, realloc bellek ayırma hatasında yeni işleyici yordamını çağırmaz. Bu varsayılan davranışı geçersiz kılarak bellek _recalloc ayrılamaması durumunda realloc yeni işleyici yordamını işlecin aynı nedenden dolayı başarısız olduğu gibi new çağırmasını sağlayabilirsiniz. Varsayılanı geçersiz kılmak için

_set_new_mode(1);

veya NEWMODE.OBJ ile bağlantı oluşturun.

Uygulama C çalışma zamanı kitaplıklarının hata ayıklama sürümüyle bağlandığında, _recalloc olarak _recalloc_dbgçözümlenir. Yığın hata ayıklama işlemi sırasında nasıl yönetilir hakkında daha fazla bilgi için bkz . CRT hata ayıklama yığını.

_recallocve __declspec(noalias)olarak işaretlenir__declspec(restrict), başka bir deyişle işlevin genel değişkenleri değiştirmemesi garanti edilir ve döndürülen işaretçinin diğer adla işaretlenmediği anlamına gelir. Daha fazla bilgi için bkz. noalias ve restrict.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Gereksinimler

Yordam Gerekli başlık
_recalloc <stdlib.h> ve <malloc.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Ayrıca bkz.

Bellek ayırma
_recalloc_dbg
_aligned_recalloc
_aligned_offset_recalloc
free
Bağlantı seçenekleri