Почему динамическая куча используется для динамического выделения памяти в языках стиля C и структура данных называется "кучей"? Есть ли какая-то связь?
c++
heap
terminology
heap-memory
Андрей Федоров
источник
источник
Ответы:
Дональд Кнут говорит (Искусство компьютерного программирования, третье издание, том 1, стр. 435):
Он не говорит, какие авторы и не дает ссылки на какие-либо конкретные статьи, но говорит, что использование термина «куча» по отношению к приоритетным очередям является традиционным смыслом этого слова.
источник
У них одинаковое имя, но они на самом деле не похожи (даже концептуально). Куча памяти называется кучей так же, как вы называете корзину для белья «кучей одежды». Это имя используется для обозначения несколько грязного места, где память может быть выделена и освобождена по желанию. Структура данных (как указывает ссылка на Википедию) совершенно иная.
источник
Название столкновения вызывает сожаление, но не все так загадочно. Куча - это небольшое общее слово, которое используется для обозначения кучи, коллекции, группы и т. Д. Использование слова для структуры данных предшествует (я почти уверен) имени пула памяти. Фактически, пул был бы намного лучшим выбором для последнего, по моему мнению. Куча обозначает вертикальную структуру (например, кучу), которая соответствует структуре данных, но не пулу памяти. Мы не думаем о куче пула памяти как иерархической, в то время как фундаментальная идея структуры данных заключается в том, чтобы держать самый большой элемент в верхней части кучи (и вложенных куч).
Куча структуры данных восходит к середине 60-х годов; куча пула памяти, начало 70-х. Термин «куча» (означающий пул памяти) был использован, по крайней мере, еще в 1971 году Вийнгаарденом в дискуссиях об Алголе.
Возможно, самое раннее использование кучи в качестве структуры данных было найдено семью годами ранее в
Williams, JWJ 1964. «Алгоритм 232 - Heapsort», Communications of ACM 7 (6): 347-348
источник
На самом деле, чтение о том, как распределяется память (см. « Блоки блоков» ), напоминает мне о куче структур данных.
источник
ИМО это просто случайность / совпадение, что эти две совершенно не связанные вещи имеют одно и то же имя. Это как график и график .
источник
Подобная куче структура данных используется алгоритмом нахождения доступной памяти. Ниже приводится выдержка из http://www.cprogramming.com/tutorial/virtual_memory_and_heaps.html .
источник
Разговорные термины стековая память и кучная память не используются в стандарте C ++. Стандарт использует статическое хранение, хранение потоков, автоматическое хранение и динамическое хранение.
Более подробную информацию можно найти в разделе «Стандарт хранения» .
Следовательно, с точки зрения языка и стандартной библиотеки, нет никакой путаницы.
источник
Q. Что такое куча? A. Куча - это совокупность объектов, расположенных друг над другом.
Ответ на ваш вопрос: и куча памяти, и двоичная куча используют ту же концепцию, что и вы. Данные хранятся в виде кучи в памяти в том же порядке, в котором они записаны в программе, тогда как бинарная куча - это структура данных, которая следует той же концепции хранения данных в упорядоченном виде в виде кучи (данные сверху другого). Дайте мне знать, что вы думаете в разделе комментариев.
источник
Возможно, первая реализованная куча памяти управлялась структурой кучи?
источник