Почему основная память для размещения объектов называется «кучей»?

10

Кто-нибудь понял, почему область основной памяти, где размещаются объекты, называется кучей. Я могу понять обоснование для стека LIFO, но хотел бы знать, каково обоснование для имени «кучи».

Cobie
источник
2
У меня нет нулевой истории или доказательств, подтверждающих это, но я бы поставил, что стек стоит первым, а на английском языке куча - это, по сути, антитеза стека, поэтому, когда что-то получалось, это не был стек и не было структурных гарантий, Куча только что пришла в голову некоторым людям, и она распространилась так, как будто язык имеет тенденцию ..
Джимми Хоффа
2
@JimmyHoffa: Вы, наверное, не за горами. В старые времена (для меня это было около 8086 года) куча и стек росли в противоположных направлениях друг к другу, стек рос снизу (конец памяти) вверх, а куча росла сверху (начало пользовательской памяти). ) вниз.
Роберт Харви
4
@DeadMG: Вот почему у нас есть этот голос, чтобы закрыть вещь, и модератор помечает, если у вас недостаточно представителей, чтобы проголосовать, чтобы закрыться. В противном случае вы можете сослаться на дубликат здесь в комментариях. В любом случае, я сделал поиск, и не смог найти никаких обманщиков.
Роберт Харви
1
К закрытому голосованию - Этот вопрос по теме. Пожалуйста, смотрите этот последний вопрос Мета для более подробной информации. По иронии судьбы, этот мета-вопрос был указан в моем списке бюллетеней сообщества по этому вопросу.
2
Дупликация не на P.SE, а скорее на SO - stackoverflow.com/questions/660855/… и stackoverflow.com/questions/1699057/…

Ответы:

7

Из информации, найденной в StackOverflow - Каково происхождение термина «куча» для бесплатного магазина? и почему два разных понятия оба называются «куча»?

Эта информация по крайней мере восходит к Кнуту в 1975 году, ссылаясь на других (неназванных) авторов:

В 1975 году несколько авторов стали называть пул доступной памяти «кучей». Но в данной серии книг мы будем использовать это слово только в более традиционном смысле, связанном с приоритетными очередями. (Искусство компьютерного программирования - фундаментальные алгоритмы, 3-е изд., Стр. 435)

Также есть упоминание о дискуссии Вийнгаардена об Algol в начале 1970-х годов, в которой доступный пул памяти обозначается как куча ( heapэто зарезервированное слово в Algol, которое местами определяется как «выделять переменной некоторое свободное пространство из глобальной кучи». - Даты Algol68 с 1968 года).

Реализация кучи ALGOL 68 1970 года может быть полезна для отслеживания некоторых аспектов происхождения слова, хотя и в значительной степени, если она находится за платным доступом.

Сообщество
источник