Page 169 - PEMROGRAMAN DASAR MENGGUNAKAN C
P. 169

}
                      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.
   164   165   166   167   168   169   170   171   172   173   174