Page 173 - Project Akhir Media Pendidikan
P. 173
double *P;
P = (double*) malloc(8); /* atau dapat juga ditulis dengan
P = (double*) malloc(sizeof(double)); */
Walaupun cara di atas diizinkan oleh kompiler serta program juga dapat berjalan
dengan benar, namun kebanyakan dari programmer C pada umumnya lebih memilih untuk
menggunakan operator sizeof untuk mendapatkan ukuran dari tipe data tertentu.
7.10.2. Menggunakan Fungsi calloc()
Fungsi ini mempunyai bentuk prototipe sebagai berikut.
void *calloc(size_t n, size_t size);
Fungsi calloc() akan mengembalikan pointer ke sebuah array yang terdiri dari n elemen
data dengan size (ukuran) yang ditentukan. Apabila tidak terpenuhi, maka fungsi ini
akan mengembalikan nilai NULL. Berbeda dengan fungsi malloc() yang tidak
melakukan inisialiasi, pada fungsi calloc() ini ruang yang dialokasikan akan
diinisialisasi dengan nilai nol. Untuk dapat lebih memahaminya, coba Anda perhataikan
contoh penggunaan fungsi calloc() berikut.
int *P;
P = (int*) calloc(20, sizeof(int));
Sintak di atas berarti mengalokasikan 80 byte ruang memori (yang berasal dari 20x4).
Dengan kata lain, terdapat 20 elemen array yang masing-masing elemennya berukuran 4
byte. Adapun nilai 4 di sini merupakan ukuran dari tipe data int.
7.10.3. Menggunakan Fungsi realloc()
Fungsi terakhir yang dapat digunakan untuk mengalokasikan memori di dalam bahasa C
adalah fungsi realloc().Berikut ini bentuk prototipe dari fungsi tersebut.
void *realloc(void *p, size_t size);
Perlu ditekankan bahwa fungsi realloc() ini sebenarnya digunakan untuk melakukan
perubahan terhadap alokasi memori yang sebelumnya telah dilakukan dengan menggunakan
fungsi malloc() atau calloc(). Dengan kata lain, fungsi ini hanya digunakan untuk
alokasi ulang apabila ternyata ruang yang dialokasikan oleh fungsi malloc() atau
calloc() kurang besar. Fungsi realloc() ini akan mengembalikan pointer ke ruang
baru yang ditambahkan, atau mengembalikan nilai NULL apabila
169