Stack dan Heap


Stack dan Heap pada Bahasa Pemrograman

Written by Achmad Rizal Muttaqin on Tuesday January 10, 2017
- Comments
Achmad Rizal Muttaqin

Para pembaca yang budiman, kali ini saya akan share sedikit informasi mengenai istilah stack dan heap pada pemrograman secara general. Dalam bahasa pemrograman terdapat istilah variable, yakni suatu tempat berfungsi untuk menampung data di memori yang mempunyai nilai yang dapat berubah-ubah selama suatu kode program dieksekusi. Seperti yang pembaca telah ketahui, ada beberapa region pada memori yang dapat dialokasikan untuk variabel, antara lain stack dan heap.

Stack merupakan region khusus pada memori yang difungsikan untuk menyimpan variabel yang dideklarasikan pada suatu kode program. Stack merupakan struktur data yang bersifat LIFO (Last In First Out), dimanage dan dioptimalisasi oleh CPU. Setiap saat suatu kode program mendeklarasikan variabel baru, maka variabel tersebut akan dimasukkan ke dalam stack, dan saat kode program tersebut selesai dieksekusi, maka variabel-variabel yang tadinya dimasukkan ke dalam stack akan dikeluarkan. Managemen memori pada stack adalah otomatis artinya saat suatu variabel dikeluarkan dari stack, maka variabel tersebut adalah terhapus dari memori, sehingga memori yang kosong akan dapat digunakan oleh variabel yang lain. Akan tetapi, stack juga memiliki keterbatasan yakni ukuran dari stack adalah bervariasi dan mempunyai limit tertentu untuk setiap OS.

Adapun heap merupakan region pada memori yang tidak dimanage secara otomatis seperti pada stack. Dan untuk mengalokasikan memori pada heap adalah dengan memanggil fungsi malloc() atau calloc(), yang merupakan fungsi standar dari bahasa pemrograman C. Untuk setiap memori yang dialokasikan pada heap, jika sudah tidak digunakan lagi tidak akan dihapus secara otomatis seperti pada stack, akan tetapi harus dilakukan secara manual dengan memanggil fungsi free(). Jika suatu kode program tidak melakukan pemanggilan terhadap fungsi free(), maka kode program tersebut memiliki bug yang dikenal sebagai memory leak, dimana memori yang dialokasikan tidak akan dapat digunakan oleh kode program yang lain dan bila memori yang dialokasikan relatif besar, maka akan berakibat pada sistem yang mengalami freeze karena kekurangan memori. Akan tetapi, heap juga memiliki kelebihan yang terletak pada ukurannya yang tidak memiliki limit, kecuali dari limit hardware secara fisik sehingga relatif lebih besar dibanding stack.

Pada prakteknya, stack digunakan untuk mengalokasikan variabel yang relatif kecil dan hanya dibutuhkan saat suatu fungsi dari kode program dieksekusi. Adapun untuk heap digunakan untuk mengalokasikan variabel yang relatif besar, misalnya array atau struct, dan variabel tersebut dibutuhkan secara global di setiap fungsi pada suatu kode program.

Source

comments powered by Disqus

— Copyright © 2017 PT. Comestoarra Bentarra Noesantarra —