Tentang memori Heap dan Stack

Saat sedang belajar bahasa program Rust, saya bertemu dengan materi Ownership. Materi ini membahas fitur Rust seputar alokasi memori. Karena tidak mau terima begitu saja, saya mundur sedikit masalah apa sih yang ownership selesaikan?.. ternyata seputar memori heap dan stack.

Tidak tahu apa itu memori heap dan stack?
saya juga!

Dapatlah bahan belajar baru yang akan saya tuangkan di sini. Tulisan tentang memori heap dan stack

Kenapa saya tidak pernah mendengarnya?

“Tidak pernah mendengar” mungkin sedikit berlebihan, lebih tepatnya jarang. Alasannya karena selama ini urusan memori saat menjalankan suatu program hanya ada saat berkutat dengan “low level language”.

Semua ada untung-ruginya. Saat ingin menggunakan bahasa program yang terkenal dengan kecepatan layaknya “Rust” pasti ada hal seperti ini yang tidak kita temui sebelumnya. Karena itulah perlu sedikit memahami konsep ini, agar tidak asal memakai bahasanya nanti.

Apa sih heap dan stack

Ini adalah cara bahasa program menyimpan suatu data di memory. Bukan database, tapi data-data dari program yang kita tulis itu sendiri.

Cara penyimpannya di memori ada dua jenis: Stack dan Heap

Kalau digambarkan kira-kira seperti ini:

gambar heap gambar stack

Apa itu Stack

Stack menyimpan data berdasarkan urutan masuknya. Bayangkan piring yang ditumpuk. Pasti cara menumpuknya harus ke atas (bukan menyelipkan ke bawah).

Cara mengambilnya sebaliknya, kita kenal dengan LIFO (last in first out) alias yang terakhir masuk, akan pertama keluar. Ingat tumpukan piring, cara ambilnya harus dari atas.

gambar stack

Ciri-ciri stack:

Apa itu Heap

Sementara heap, bayangkan kamu masuk ke restoran. Pelayannya akan bertanya “berapa orang Pa?”. Tempat duduk kamu akan disesuaikan dengan jumlah kursi dan orangnya.

Menyimpan data di heap sering diikat dengan kata ‘allocating’. Karena kita harus secara khusus mencarikan tempat untuk data tersebut. Setiap meja di restoran ada nomor atau kodenya. Nomor ini kita sebut sebagai address/pointer yang mewakili meja tersebut.

gambar heap

Ciri-ciri Heap:

Kapan menggunakan Heap, kapan Stack

Kasarnya sih.. kamu pakai stack saat sudah tahu berapa banyak data yang dibutuhkan sebelum compile berjalan dan ukurannya tidak terlalu besar. Heap sebaliknya.

Setiap bahasa program punya cara masing-masing data mana yang disimpan di heap, data mana yang di stack

Contoh kongkrit heap dan stack?

Contohnya kamu mau menyimpan angka

let x = 10;

Karena nilainya sudah diketahui dan relatif kecil, ini disimpan di stack.

Sementara, saat kamu misalnya ingin menerima sesuatu dari input user

let input = InputFromUser()

Nilainya cenderung tidak diketahui, kita menyimpannya di heap.



/Ingin memperbaiki halaman ini? Edit di sini
/✉️ Berlangganan email saat ada konten baru.
/Saya Hilman..ini adalah Jurnal & Kanvas saya seputar dunia koding