Page 172 - Project Akhir Media Pendidikan
P. 172
}
Pada program di atas, pointer P hanya dapat menunjuk ke alamat dari variabel x saja. Selain
itu kita juga tidak diizinkan untuk melakukan perubahan nilai terhadap variabel dari alamat
yang ditunjuk oleh pointer P.
7.10. Mengalokasikan Memori
Dalam dunia pemrograman kita diizinkan untuk mengalokasikan ruang memori secara
dinamis pada saat program berjalan sesuai dengan yang kita butuhkan, proses seperti ini
dinamakan dengan alokasi memori dinamis (dynamic memory allocation). Sedangkan
pada saat kita mendeklarasikan variabel (baik global maupun lokal) di dalam kode
program yang kita tulis, kompiler secara otomatis akan memesan sejumlah ruang
memori untuk menampung variabel tersebut, proses seperti ini disebut dengan alokasi
memori statis (static memory allocation).
Untuk melakukan alokasi memori secara dinamis kita membutuhkan pointer untuk mencatat
alamat-alamat baru yang dipesan. Bahasa C telah menyediakan fungsi-fungsi yang
digunakan untuk proses pemesanan memori secara dinamis, yaitu fungsi malloc(),
calloc() dan realloc(). Adapun penjelasan dari masing-masing fungsi tersebut dapat
Anda lihat pada sub bab di bawah ini.
7.10.1. Menggunakan Fungsi malloc()
Fungsi ini mempunyai bentuk prototipe sebagai berikut.
void *malloc(size_t n);
Fungsi malloc() akan mengembalikan pointer ke sejumlah n byte ruang memori yang
belum diinisialisasi. Apabila tidak terpenuhi, maka fungsi ini akan mengembalikan nilai
NULL. Hal yang perlu diperhatikan dalam menggunakan fungsi ini adalah kita harus
melakukan typecasting terhadap pointer yang akan dipesan sesuai dengan tipe data yang
diinginkan. Perhatikan contoh penggunaan fungsi malloc() di bawah ini.
int array[10];
int *P;
P = (int*) malloc (10 * sizeof(int));
Sintak di atas artinya kita memesan atau mengalokasikan ruang memori sebanyak 40
byte (berasal dari 10x4) untuk menyimpan data yang bertipe int dan mencatat ruang
tersebut ke dalam pointer P. Adapun nilai 4 di sini berasal dari ukuran tipe data int,
yang dituliskan dengan sizeof(int). Jadi apabila kita ingin mengalokasikan ruang
memori untuk tipe data double, sedangkan kita telah mengetahui bahwa tipe data
double berukuran 8 byte, maka kita dapat menuliskannya sebagai berikut.
168