_recalloc
Kombinasi dan realloc
calloc
. Merealokasi array dalam memori dan menginisialisasi elemennya menjadi 0.
Sintaks
void *_recalloc(
void *memblock
size_t num,
size_t size
);
Parameter
memblock
Pointer ke blok memori yang dialokasikan sebelumnya.
number
Jumlah elemen.
size
Panjang dalam byte dari setiap elemen.
Nilai hasil
_recalloc
void
mengembalikan pointer ke blok memori yang dialokasikan (dan mungkin dipindahkan).
Jika memori yang tersedia tidak cukup untuk memperluas blok ke ukuran tertentu, blok asli dibiarkan tidak berubah, dan NULL
dikembalikan.
Jika ukuran yang diminta adalah nol, maka blok yang menunjuk ke oleh memblock
dibesarkan; nilai yang dikembalikan adalah NULL
, dan memblock
dibiarkan menunjuk pada blok yang dibeberkan.
Nilai pengembalian menunjuk ke ruang penyimpanan yang cocok diselaraskan untuk penyimpanan jenis objek apa pun. Untuk mendapatkan penunjuk ke jenis selain void
, gunakan jenis cast pada nilai yang dikembalikan.
Keterangan
Fungsi mengubah _recalloc
ukuran blok memori yang dialokasikan. Argumen memblock
menunjuk ke awal blok memori. Jika memblock
adalah NULL
, _recalloc
berulah dengan cara yang sama seperti calloc
dan mengalokasikan blok number
* size
byte baru. Setiap elemen diinisialisasi ke 0. Jika memblock
bukan NULL
, seharusnya penunjuk yang dikembalikan oleh panggilan sebelumnya ke calloc
, , malloc
atau realloc
.
Karena blok baru dapat berada di lokasi memori baru, penunjuk yang dikembalikan _recalloc
oleh tidak dijamin sebagai penunjuk yang melewati memblock
argumen.
_recalloc
errno
diatur ke ENOMEM
jika alokasi memori gagal atau jika jumlah memori yang diminta melebihi _HEAP_MAXREQ
. Untuk informasi tentang kode kesalahan ini dan lainnya, lihat errno
, , _doserrno
_sys_errlist
, dan _sys_nerr
.
recalloc
realloc
panggilan untuk menggunakan fungsi C++ _set_new_mode
untuk mengatur mode handler baru. Mode handler baru menunjukkan apakah, jika gagal, realloc
adalah memanggil rutinitas handler baru seperti yang ditetapkan oleh _set_new_handler
. Secara default, realloc
tidak memanggil rutinitas handler baru saat gagal mengalokasikan memori. Anda dapat mengambil alih perilaku default ini sehingga, ketika _recalloc
gagal mengalokasikan memori, realloc
memanggil rutinitas handler baru dengan cara yang sama seperti yang new
dilakukan operator ketika gagal karena alasan yang sama. Untuk mengambil alih default, panggil
_set_new_mode(1);
di awal program, atau tautan dengan NEWMODE.OBJ.
Ketika aplikasi ditautkan dengan versi debug pustaka run-time C, _recalloc
diselesaikan ke _recalloc_dbg
. Untuk informasi selengkapnya tentang bagaimana tumpukan dikelola selama proses debugging, lihat Tumpukan debug CRT.
_recalloc
ditandai __declspec(noalias)
dan __declspec(restrict)
, yang berarti bahwa fungsi dijamin tidak memodifikasi variabel global, dan bahwa penunjuk yang dikembalikan tidak diberi alias. Untuk informasi lebih lanjut, lihat noalias
dan restrict
.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_recalloc |
<stdlib.h> dan <malloc.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Lihat juga
Alokasi memori
_recalloc_dbg
_aligned_recalloc
_aligned_offset_recalloc
free
Opsi tautan