calloc
Mengalokasikan array dalam memori dengan elemen yang diinisialisasi ke 0.
Sintaks
void *calloc(
size_t number,
size_t size
);
Parameter
number
Jumlah elemen.
size
Panjang dalam byte dari setiap elemen.
Nilai hasil
calloc
mengembalikan penunjuk ke spasi yang dialokasikan. Ruang penyimpanan yang diarahkan oleh nilai pengembalian cocok diselaraskan untuk penyimpanan dari semua jenis objek. Untuk mendapatkan penunjuk ke jenis selain void
, gunakan jenis cast pada nilai yang dikembalikan.
Keterangan
Fungsi ini calloc
mengalokasikan ruang penyimpanan untuk array number
elemen, masing-masing byte panjang size
. Setiap elemen diinisialisasi ke 0.
calloc
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
.
Dalam implementasi Microsoft, jika number
atau size
nol, calloc
mengembalikan penunjuk ke blok yang dialokasikan dengan ukuran bukan nol. Upaya untuk membaca atau menulis melalui penunjuk yang dikembalikan menyebabkan perilaku yang tidak ditentukan.
calloc
menggunakan fungsi C++ _set_new_mode
untuk mengatur mode handler baru. Mode handler baru menunjukkan apakah, jika gagal, calloc
adalah memanggil rutinitas handler baru seperti yang ditetapkan oleh _set_new_handler
. Secara default, calloc
tidak memanggil rutinitas handler baru saat gagal mengalokasikan memori. Anda dapat mengambil alih perilaku default ini sehingga, ketika calloc
gagal mengalokasikan memori, ia 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 Anda, atau tautkan dengan NEWMODE.OBJ
(lihat Opsi tautan).
Ketika aplikasi ditautkan dengan versi debug pustaka run-time C, calloc
diselesaikan ke _calloc_dbg
. Untuk informasi selengkapnya tentang bagaimana tumpukan dikelola selama proses debugging, lihat Tumpukan debug CRT.
calloc
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 |
---|---|
calloc |
<stdlib.h> dan <malloc.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// crt_calloc.c
// This program uses calloc to allocate space for
// 40 long integers. It initializes each element to zero.
#include <stdio.h>
#include <malloc.h>
int main( void )
{
long *buffer;
buffer = (long *)calloc( 40, sizeof( long ) );
if( buffer != NULL )
printf( "Allocated 40 long integers\n" );
else
printf( "Can't allocate memory\n" );
free( buffer );
}
Allocated 40 long integers
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk