Alokasi Memori Statis dan Dinamis – Alokasi memori adalah suatu proses manajemen memori yang memungkinkan program meminta atau memesan sebagian memori kepada komputer. Dalam pemrograman, diperlukan penyimpanan data komputasi yang disimpan di memori.
Lokasi atau alamat memori untuk menyimpan data dalam pemrograman komputer dikenal sebagai variabel. Setiap variabel atau object, memiliki tipe data tertentu. Oleh karena itu, memori dialokasikan untuk menjalankan program. Ada 2 cara dalam mengalokasikan memori yaitu :
- Alokasi memori statis
- Alokasi memori dinamis.
Apa itu alokasi memori statis dan dinamis ?
Mari kita bahas …
Alokasi Memori Statis
Secara default, komputer menggunakan alokasi memori statis. Memori statis adalah memori yang dipakai oleh variabel atau object yang memiliki jumlah yang tetap. Setelah memori dialokasikan, maka ukuran memori sudah tidak dapat diubah, ditingkatkan ataupun dikurangi.
Pengguna hanya akan memanfaatkan memori yang sudah di tersedia pada program tersebut. Misalnya, dalam bahasa C jika programmer menulis int x, artinya variabel tersebut dapat menyimpan nilai integer. Jadi setelah variabel dialokasikan, maka variabel tersebut tetap permanen.
Contoh lainnya, jika programmer awalnya mengalokasikan array yang dapat menampung 5 elemen, tapi yang dibutuhkan ternyata hanya 5 elemen, maka akan terjadi pemborosan memori. Walaupun memori tersebut tidak diperlukan lagi, tapi sudah tidak dapat digunakan kembali. Programer juga tidak dapat memberi perintah ke komputer untuk membuang memori untuk membebaskan ruang penyimpanan.
Selain itu, hal ini juga dapat menghambat menghambat kinerja. Misalnya, jika pengguna berhenti menjalankan program yang membutuhkan 1 MB pada mesin 2 MB, lalu pengguna menjalankan program kedua yang membutuhkan 1 MB lagi, maka program kedua itu tidak akan berfungsi karena tidak ada cukup memori yang tersisa di komputer untuk program lain.
Hal inilah sebabnya mengapa programer sering menggunakan alokasi memori dinamis. lalu apa itu alokasi memori dinamis ?
Mari kita bahas ..
Alokasi Memori Dinamis
Alokasi memori dinamis disebut juga sebagai alokasi memori berbasis stack/tumpukan. Stack atau tumpukan adalah merupakan struktur data yang digunakan untuk menyimpan sekumpulan variabel atau objek. Semua variabel yang dideklarasikan di dalam fungsi (function) akan mengambil memori dari stack. Area memori yang digunakan untuk alokasi secara dinamis ini disebut dengan heap. Heap digunakan sebagai memori tambahan yang sebelumnya tidak dialokasikan.
Alokasi adalah suatu proses yang dilakukan program untuk memesan atau meminta memori tambahan kepada komputer. Apabila memori yang di minta itu sudah tidak dibutuhkan, maka memori tersebut akan dilepaskan dan dikembalikan lagi pada komputer, hal ini disebut juga dengan dealokasi. Lalu komputer akan menyiapkan memori itu lagi apabila memori tersebut ingin dipakai kembali.
Jadi, alokasi memori dinamis, adalah suatu metode manajemen memori yang memungkinkan pemrogram untuk mengatur segala sesuatu tentang memori agar lebih dinamis dan efisien, diantaranya :
- Jumlah memori yang dialokasikan pada setiap program
- Membebaskan memori yang tidak diperlukan
- Jangka waktu memori yang akan disimpan
- Mengatur sumber daya untuk menghemat memori sistem
Alokasi memori dinamis ini sangat berkaitan dengan alokasi memori statis. Beberapa hal diatas dapat dilakukan karena memori statis menyimpan segala sesuatu tentang program, nah dengan memori dinamis memungkinkan pemrogram untuk mengatur memori saat program sedang berjalan (runtime). Oleh sebab itu, memori statis juga akan tetap diperlukan.
Selain itu, penerapan alokasi memori dinamis itu juga cukup rumit. Misalnya programer memiliki suatu aplikasi, maka programer menyisipkan alokasi nilai waktu pada program untuk mengosongkan memori. Namun jika pemrogram lupa menetapkan nilai waktu tersebut, maka memori dinamis akan tetap terisi dan akan menyimpan data. Lain halnya memori statis yang akan melepaskan memori tersebut.
Lalu bagaimana menerapkan alokasi memori dinamis pada program ?
Contoh Penerapan Alokasi Dinamis
Untuk menjawabnya, disini saya berikan contoh pada bahasa C. Ada empat fungsi (function) yang bisa digunakan untuk alokasi memori dinamis pada bahasa C, yaitu calloc, malloc, realoc dan free. Untuk dapat menggunakan ke empat fungsi tersebut, maka harus mendefinisikan header stdlib.h.
- Fungsi malloc() mengalokasikan ukuran byte dan mengembalikan pointer kosong,
- Fungsi calloc() mengalokasikan ukuran byte dan menginisialisasinya ke nol.
- Fungsi free () digunakan untuk mengalokasikan kembali memori yang dialokasikan.
- Fungsi realoc(), mengubah memori yang dialokasikan sebelumnya pada calloc atau malloc.
Sampai disini, kita sudah mengetahui apa itu memori statis dan dinamis. Diantara keduanya juga memiliki kesamaan yaitu sama-sama sebagai mekanisme alokasi memori dan sama-sama harus diterapkan secara manual.
Lalu apa perberdaan dari alokasi memori statis dan dinamis ?
Perbedaan Alokasi Memori Statis dan Dinamis
1. Setelah memori statis dialokasikan, maka akan bersifat itu tetap dan tidak dapat diubah. sedangkan memori dinamis maka dapat diubah.
2. Dalam alokasi memori dinamis, ukuran memori dapat kurangi atau ditambah. sedangkan alokasi memori statis, tidak dapat mengubah ukuran
3. Alokasi memori dinamis lebih rumit untuk diterapkan dari pada alokasi memori statis
4. Eksekusi alokasi pada memori dinamis lebih lambat dari pada alokasi memori statis.
5. Pada alokasi memori statis, saat terdapat memori yang tidak diperlukan. maka sudah tidak dapat digunakan lagi. Sedangkan alokasi memori dinamis, dapat melepaskan dan mengalokasikan lebih banyak memori bila diperlukan
Begitulah pembahasan mengenai pengertian dan perbedaan alokasi memori statis dan dinamis.