Mengapa tumpukan runtime digunakan untuk alokasi memori dinamis dalam bahasa gaya-C dan struktur data keduanya disebut "tumpukan"? Apakah ada hubungannya?
c++
heap
terminology
heap-memory
Andrey Fedorov
sumber
sumber
Jawaban:
Donald Knuth berkata (The Art of Computer Programming, Third Ed., Vol. 1, hal. 435):
Dia tidak mengatakan penulis mana dan tidak memberikan referensi ke makalah tertentu, tetapi mengatakan bahwa penggunaan istilah "tumpukan" dalam kaitannya dengan antrian prioritas adalah pengertian tradisional dari kata tersebut.
sumber
Mereka memiliki nama yang sama tetapi mereka benar-benar tidak mirip (bahkan secara konseptual). Tumpukan memori disebut tumpukan dengan cara yang sama Anda akan menyebut keranjang cucian sebagai "tumpukan pakaian". Nama ini digunakan untuk menunjukkan tempat yang agak berantakan di mana memori dapat dialokasikan dan dialokasikan sesuai keinginan. Struktur data (seperti yang ditunjukkan oleh tautan Wikipedia) sangat berbeda.
sumber
Tabrakan nama itu disayangkan, tetapi tidak semua yang misterius. Heap adalah kata kecil yang umum digunakan untuk tumpukan, kumpulan, grup, dll. Penggunaan kata untuk struktur data pra-tanggal (saya cukup yakin) nama kumpulan memori. Bahkan, kolam akan menjadi pilihan yang jauh lebih baik untuk yang terakhir, menurut pendapat saya. Heap berkonotasi struktur vertikal (seperti tumpukan), yang cocok dengan struktur data, tetapi tidak kumpulan memori. Kami tidak menganggap tumpukan kumpulan memori sebagai hierarki, sedangkan ide mendasar di balik struktur data adalah menjaga elemen terbesar di atas tumpukan (dan sub-tumpukan).
Tumpukan struktur data tanggal kembali ke pertengahan 60-an; menumpuk kumpulan memori, awal 70-an. Istilah heap (artinya kumpulan memori) digunakan setidaknya pada awal 1971 oleh Wijngaarden dalam diskusi tentang Algol.
Mungkin penggunaan heap paling awal sebagai struktur data ditemukan tujuh tahun sebelumnya di
Williams, JWJ 1964. "Algoritma 232 - Heapsort", Communications of the ACM 7 (6): 347-348
sumber
Sebenarnya, membaca tentang cara memori dialokasikan (lihat Blok Buddy ) mengingatkan saya pada tumpukan dalam struktur data.
sumber
IMO itu hanya kebetulan / kebetulan bahwa kedua hal yang sama sekali tidak berhubungan ini memiliki nama yang sama. Ini seperti grafik dan grafik .
sumber
Struktur data mirip tumpukan digunakan oleh algoritma untuk menemukan alokasi memori yang tersedia. Berikut ini adalah kutipan dari http://www.cprogramming.com/tutorial/virtual_memory_and_heaps.html .
sumber
Istilah sehari-hari menumpuk memori dan memori tumpukan tidak digunakan dalam standar C ++. Standar ini menggunakan penyimpanan statis, penyimpanan utas, penyimpanan otomatis, dan penyimpanan dinamis.
Lebih banyak dapat ditemukan di bagian Duration Penyimpanan standar.
Oleh karena itu, dari sudut pandang bahasa dan perpustakaan standar, tidak ada kebingungan.
sumber
Q. Apa itu heap? A. Tumpukan adalah kumpulan objek yang saling bertumpukan.
Jawaban untuk pertanyaan Anda: Memori tumpukan dan tumpukan biner menggunakan konsep yang sama seperti yang Anda tahu. Data disimpan dalam bentuk tumpukan di memori dalam urutan yang sama seperti yang ditulis dalam program sedangkan tumpukan biner adalah struktur data yang mengikuti konsep yang sama menyimpan data dalam cara yang dipesan dalam bentuk tumpukan (Data di atas dari yang lain). Biarkan saya tahu apa yang Anda pikirkan di bagian komentar.
sumber
Mungkin tumpukan memori pertama diimplementasikan dikelola oleh struktur tumpukan?
sumber