Untuk menghindari adanya pemborosan dalam penggunaan memori
computer tentu kita harus pandai mengatur keberadaan data-data yang tersimpan
dalam memori. Artinya, kita harus
mengatur keberadaan data tersebut secara dinamis. Untuk melakukan hal tersebut
kita harus menggunakan pointer, yaitu dengan cara mengalokasikan data-data yang
diperlukan dan mendealokasikan data-data yang diperlukan dan mendealokasikan
data-data yang sudah tidak diperlukan lagi oleh proram. Hal inilah yang
merupakan keunggulan pointer karena
dengan pengalokasian secara dinamis tentu program kita akan berjalan lebih
cepat sehingga kinerja atau perfomanya pun jauh lebih tinggi bila dibandingkan
dengan program yang semua data-datanya dialokasikan dengan cara statis.
1.Alokasi Memori
Proses pengalokasian memori merupakan proses pemesanan sejumlah
ruang memori untuk menempatkan data sesuai dengan ukuran yang ditentukan
sendiri oleh programmer. Bahasa Pascal menyediakan tiga buah prosedur yang dapat
digunakan untuk melakukan alokasi memori, yaitu Prosedur New, GetMem dan Mark.
Berikut ini penjelasan dari masing-masing prosedur tersebut.
Prosedur New
Bentuk prototipe dari prosedur ini
adalah sebagai berikut :
Procedure New(var P: pointer);
Prosedur ini akan mengalokasikan
memori dan mengeset pointer untuk menunjuk ke alamt baru tersebut. Pointer p
bertipe pointer sehingga dapat digunakan untuk mengalokasikan berbagai tipe
point (char, integer, real, record maupun lainnya). Setelah selesai digunakan,
maka ruang memori tersebut sebaiknya
dialokasikan lagi dengan menggunakan prosedur Dispose.
Prosedur GetMem
Pada prosedur GetMem kita dapat
mendefinisikan sendiri besarnya memori yang akan dialokasikan. Berikut ini
prototype dari prosedur ini.
Procedure GerMem (var P:
pointer; Size: Integer);
dimana P adalah pointer generic yang
dapat diisikan dengan pointer dari tipe apapun. Sedangkan Size merupakan
parameter yang berfungsi untuk menentukan besarnya ukuran memori yang akan
dipesan. Pemesanan memori dengan prosedur GetMem ini harus didealokasikan
dengan menggunakan prosedur FreeMem.
Prosedur Mark
Prosedur Mark memiliki prototipe
sebagai berikut :
Procedure Mark(var P: pointer);
Prosedur ini hanya digunakan untuk
melakukan perekaman keadaan heap memori ke dalam sebuah pointer. Artinya, apabila kita akan mengalokasikan
beberapa buah pointer dengan prosedur New atau GetMem, kita tidak perlu repot
melakukan dealokasi satu persatu.
2.Dealokasi Memori
Dealokasi memori merupakan proses
membebaskan kembali ruang memori yang sebelumnya telah ditempati oleh data
tertentu sehingga ruang memori tersebut dapat digunakan kembali oleh data-data
lain yang diperlukan oleh program. Sesuai dengan banyaknya prosedur
pengalokasian, untuk proses dealokasi juga memiliki tiga buah prosedur, yaitu Dispose, FreeMem, dan Release.
a. Prosedur New
Dispose Prototipe
dari prosedur ini sebagai berikut :
Procedure
dispose(var P: pointer);
Prosedur ini digunakan apabila kita mengalokasikan pointer P dengan menggunakan prosedur New.
b. Prosedur FreeMem
Prototipe
dari prosedur ini sebagai berikut :
Procedure FreeMem (var P: pointer;
size: integer);
Prosedur ini digunakan apabila kita mengalokasikan pointer p dengan menggunakan
prosedur Get Mem. Begitu pula dengan nlai size haruss sesuai dengan nilai yang
terdapat pada proses pengalokasian.
c. Prosedur Release
Prototipe
dari prosedur ini sebagai berikut :
Procedure Release( var P: pointer);
Prosedur
ini digunakan untuk membebaskan semua pointer yang telah dialokasikan dan telah
dutandai dengan menggunakan procedure Mark.
Sumber : Teknik Pemrograman Pascal revisi ketiga, Budi Raharjo
Tidak ada komentar:
Posting Komentar