_recalloc

Kombinasi dan realloccalloc. 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

_recallocvoid 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, , mallocatau realloc.

Karena blok baru dapat berada di lokasi memori baru, penunjuk yang dikembalikan _recalloc oleh tidak dijamin sebagai penunjuk yang melewati memblock argumen.

_recallocerrno 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.

recallocrealloc 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.

Baca juga

Alokasi memori
_recalloc_dbg
_aligned_recalloc
_aligned_offset_recalloc
free
Opsi tautan