Apa itu Tumpukan?
Tumpukan adalah kawasan khas memori komputer yang menyimpan pemboleh ubah sementara yang dibuat oleh fungsi. Dalam timbunan, pemboleh ubah diisytiharkan, disimpan dan dimulakan semasa runtime.
Ia adalah memori simpanan sementara. Apabila tugas pengkomputeran selesai, memori pemboleh ubah akan terhapus secara automatik. Bahagian timbunan kebanyakannya mengandungi kaedah, pemboleh ubah tempatan, dan pemboleh ubah rujukan.
Dalam tutorial ini, anda akan belajar,
- Apa itu Stack?
- Apa itu timbunan?
- Perbezaan Utama antara Tumpukan dan Tumpukan
- Kelebihan menggunakan Stack
- Kelebihan menggunakan Heap
- Kelemahan penggunaan Stack
- Kelemahan penggunaan Heap
- Bilakah menggunakan timbunan atau timbunan?
Apa itu timbunan?
Tumpukan adalah memori yang digunakan oleh bahasa pengaturcaraan untuk menyimpan pemboleh ubah global. Secara lalai, semua pemboleh ubah global disimpan di ruang memori timbunan. Ia menyokong peruntukan memori Dinamik.
Tumpukan tidak diuruskan secara automatik untuk anda dan tidak dikendalikan dengan ketat oleh CPU. Ia lebih menyerupai kawasan memori bebas
PERBEZAAN UTAMA
- Stack adalah struktur data linear sedangkan Heap adalah struktur data hierarki.
- Memori tumpukan tidak akan menjadi terpecah-pecah sedangkan memori Tumpukan dapat menjadi terpecah-pecah ketika blok memori mula-mula diperuntukkan dan kemudian dibebaskan.
- Stack mengakses pemboleh ubah tempatan hanya sementara Heap membolehkan anda mengakses pemboleh ubah secara global.
- Pemboleh ubah tumpukan tidak dapat diubah ukurannya sedangkan pemboleh ubah tumpukan dapat diubah ukurannya.
- Memori tumpukan dialokasikan dalam blok bersebelahan sedangkan memori Tumpukan dialokasikan dalam urutan rawak.
- Stack tidak memerlukan pengalihan pemboleh ubah sedangkan di Heap de-peruntukan diperlukan.
- Peruntukan tumpukan dan penyahpindahan dilakukan dengan arahan penyusun sedangkan peruntukan dan penyahpindahan Heap dilakukan oleh pengaturcara.
Perbezaan Utama antara Tumpukan dan Tumpukan
Parameter | Timbunan | Timbunan |
---|---|---|
Jenis struktur data | Tumpukan adalah struktur data linear. | Heap adalah struktur data hierarki. |
Kelajuan akses | Akses berkelajuan tinggi | Lebih perlahan berbanding timbunan |
Pengurusan ruang | Ruang dikendalikan dengan cekap oleh OS sehingga memori tidak akan terpecah-pecah. | Ruang Tumpukan tidak digunakan dengan cekap. Memori boleh menjadi terpecah-pecah sebagai blok memori yang pertama kali dialokasikan dan kemudian dibebaskan. |
Akses | Pemboleh ubah tempatan sahaja | Ini membolehkan anda mengakses pemboleh ubah secara global. |
Had saiz ruang | Had saiz timbunan bergantung pada OS. | Tidak mempunyai had khusus pada ukuran memori. |
Ubah saiz | Pemboleh ubah tidak boleh diubah saiznya | Pemboleh ubah boleh diubah saiznya. |
Peruntukan Ingatan | Memori diperuntukkan dalam blok bersebelahan. | Memori diperuntukkan dalam urutan rawak. |
Peruntukan dan Pembuangan Semula | Secara automatik dilakukan dengan arahan penyusun. | Ia dilakukan secara manual oleh pengaturcara. |
Pembatalan | Tidak memerlukan pembahagian pemboleh ubah. | Pembuangan yang jelas diperlukan. |
Kos | Kurang | Lebih banyak lagi |
Pelaksanaan | Tumpukan dapat dilaksanakan dengan 3 cara berdasarkan larik sederhana, menggunakan memori dinamik, dan berdasarkan senarai Berkaitan. | Tumpukan dapat dilaksanakan dengan menggunakan susunan dan pokok. |
Isu utama | Kekurangan ingatan | Pemecahan memori |
Lokasi rujukan | Arahan masa menyusun automatik. | Memadai |
Kelenturan | Ukuran tetap | Saiz semula mungkin |
Masa akses | Lebih pantas | Lebih perlahan |
Kelebihan menggunakan Stack
Berikut adalah kebaikan / faedah menggunakan timbunan:
- Membantu anda menguruskan data dengan kaedah Last In First Out (LIFO) yang tidak mungkin dilakukan dengan senarai dan susunan yang dipautkan.
- Apabila fungsi dipanggil pemboleh ubah tempatan disimpan dalam timbunan, dan secara automatik ia dimusnahkan setelah dikembalikan.
- Tumpukan digunakan apabila pemboleh ubah tidak digunakan di luar fungsi tersebut.
- Ia membolehkan anda mengawal bagaimana memori dialokasikan dan dialihkan.
- Tumpukan membersihkan objek secara automatik.
- Tidak mudah rosak
- Pemboleh ubah tidak boleh diubah saiznya.
Kelebihan menggunakan Heap
Kelebihan / kebaikan menggunakan memori timbunan adalah:
- Tumpukan menolong anda mencari nombor terbesar dan minimum
- Pengumpulan sampah dijalankan di memori timbunan untuk membebaskan memori yang digunakan oleh objek.
- Kaedah timbunan juga digunakan dalam Priority Queue.
- Ini membolehkan anda mengakses pemboleh ubah secara global.
- Heap tidak mempunyai had ukuran memori.
Kelemahan penggunaan Stack
Kekurangan / Kekurangan menggunakan memori Stack adalah:
- Memori tumpukan sangat terhad.
- Membuat terlalu banyak objek pada timbunan dapat meningkatkan risiko limpahan timbunan.
- Akses secara rawak tidak boleh dilakukan.
- Storan berubah-ubah akan ditimpa, yang kadang-kadang membawa kepada tingkah laku fungsi atau program yang tidak ditentukan.
- Tumpukan akan jatuh di luar kawasan memori, yang mungkin menyebabkan penamatan yang tidak normal.
Kelemahan penggunaan Heap
Kekurangan / kekurangan penggunaan memori Heaps adalah:
- Ia dapat memberikan memori maksimum yang dapat diberikan oleh OS
- Ia memerlukan lebih banyak masa untuk membuat pengiraan.
- Pengurusan memori lebih rumit dalam memori timbunan kerana ia digunakan secara global.
- Ia memerlukan terlalu banyak masa dalam pelaksanaan berbanding dengan timbunan.
Bilakah menggunakan timbunan atau timbunan?
Anda harus menggunakan timbunan apabila anda memerlukan peruntukan memori yang besar. Sebagai contoh, anda ingin membuat susunan ukuran besar atau struktur besar untuk mengekalkan pemboleh ubah tersebut dalam jangka masa yang lama maka anda harus memperuntukkannya di timbunan.
Walau bagaimanapun, Sekiranya anda bekerja dengan pemboleh ubah yang agak kecil yang hanya diperlukan sehingga fungsi menggunakannya masih hidup. Kemudian anda perlu menggunakan timbunan, yang lebih cepat dan mudah.