_recalloc
ve calloc
birleşimirealloc
. 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 NULL
ve 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 void
bir 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ğu * size
number
ayırır.calloc
_recalloc
NULL
Her öğe 0 olarak başlatılır. değilse memblock
NULL
, önceki bir , veya realloc
çağrısı calloc
malloc
tarafı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
ENOMEM
, bellek ayırmanın başarısız olup olmadığını veya istenen bellek miktarının 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
.
recalloc
yeni işleyici modunu ayarlamak için C++ _set_new_mode
işlevini kullanmak için çağrılarrealloc
. Yeni işleyici modu, hata realloc
durumunda tarafından _set_new_handler
ayarlanan 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 realloc
ayrılamaması durumunda _recalloc
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ı.
_recalloc
ve __declspec(restrict)
olarak işaretlenir__declspec(noalias)
, 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