Apa itu tumpukan memori?
Mungkin yang Anda maksud adalah tumpukan dari sudut pandang alokasi memori, bukan dari sudut pandang struktur data (istilah ini memiliki banyak makna).
Penjelasan yang sangat sederhana adalah bahwa heap adalah bagian dari memori di mana memori yang dialokasikan secara dinamis berada (yaitu memori yang dialokasikan melalui malloc
). Memori yang dialokasikan dari heap akan tetap dialokasikan hingga salah satu dari yang berikut terjadi:
free
'dJika semua referensi ke memori yang dialokasikan hilang (mis. Anda tidak menyimpan pointer lagi), Anda memiliki apa yang disebut kebocoran memori . Di sinilah memori masih dialokasikan, tetapi Anda tidak memiliki cara mudah untuk mengaksesnya lagi. Memori yang bocor tidak dapat direklamasi untuk alokasi memori yang akan datang, tetapi ketika program berakhir, memori akan dibebaskan oleh sistem operasi.
Bandingkan ini dengan memori tumpukan yang merupakan tempat variabel lokal (yang didefinisikan dalam suatu metode) tinggal. Memori yang dialokasikan pada stack umumnya hanya hidup sampai fungsi kembali (ada beberapa pengecualian untuk ini, misalnya variabel lokal statis).
Anda dapat menemukan informasi lebih lanjut tentang tumpukan di artikel ini .
Memori tumpukan adalah lokasi di memori di mana memori dapat dialokasikan pada akses acak.
Tidak seperti tumpukan di mana memori dialokasikan dan dirilis dalam urutan yang sangat jelas, masing-masing elemen data yang dialokasikan pada heap biasanya dirilis dengan cara yang tidak sinkron satu sama lain. Setiap elemen data tersebut dibebaskan ketika program secara eksplisit melepaskan pointer yang sesuai, dan ini dapat menyebabkan tumpukan terfragmentasi. Sebaliknya hanya data di bagian atas (atau bagian bawah, tergantung pada cara tumpukan bekerja) dapat dirilis, sehingga elemen data dibebaskan dalam urutan terbalik yang dialokasikan.
sumber
Heap hanyalah area di mana memori dialokasikan atau dialokasikan tanpa urutan apa pun. Ini terjadi ketika seseorang membuat objek menggunakan
new
operator atau yang serupa. Ini bertentangan dengan tumpukan di mana memori dialokasikan secara pertama keluar terakhir.sumber
Memori tumpukan adalah struktur umum untuk memegang memori yang dialokasikan secara dinamis. Lihat Dynamic_memory_allocation di wikipedia.
Ada struktur lain, seperti kolam, tumpukan dan tumpukan.
sumber
Ini adalah sebagian memori yang dialokasikan dari sistem operasi oleh manajer memori yang digunakan oleh suatu proses. Panggilan ke
malloc()
et alia kemudian mengambil memori dari tumpukan ini daripada harus berurusan dengan sistem operasi secara langsung.sumber
Anda mungkin berarti tumpukan memori, bukan tumpukan memori.
Memori tumpukan pada dasarnya adalah kumpulan memori yang besar (biasanya per proses) dari mana program yang sedang berjalan dapat meminta potongan. Ini biasanya disebut alokasi dinamis .
Ini berbeda dari Stack, di mana "variabel otomatis" dialokasikan. Jadi, misalnya, ketika Anda mendefinisikan dalam fungsi C variabel pointer, ruang yang cukup untuk menyimpan alamat memori dialokasikan pada stack. Namun, Anda akan sering perlu mengalokasikan ruang secara dinamis (Dengan malloc) di heap dan kemudian memberikan alamat tempat potongan memori ini mulai ke pointer.
sumber