Для чего бы то ни было, у ALGOL68, который предшествовал C, было действительное ключевое слово heap
, которое использовалось для выделения пространства для переменной из «глобальной кучи», в отличие от loc
, который выделил его в стеке.
Но я подозреваю, что использование может быть просто потому, что в нем нет реальной структуры. Под этим я подразумеваю, что вы не гарантированно получите наиболее подходящий блок или следующий блок в памяти, скорее вы возьмете то, что вам дают, в зависимости от прихотей стратегии распределения.
Как и большинство имен, о нем, вероятно, думал какой-то кодер, которому просто нужно имя.
Я часто слышал о ней, которая иногда упоминается как арена (сообщение об ошибке от многих лун назад, говорящее, что «арена памяти была повреждена»). Это поднимает изображения кусков памяти, сражающихся в гладиаторском стиле внутри вашего адресного пространства (а-ля фильм Трон).
Суть в том, что это просто название области памяти, вы можете с таким же успехом назвать ее brk-pool или sbrk-pool (после вызовов для ее изменения) или любым из дюжины других имен.
Я помню, что когда мы собирали стеки протоколов связи, еще до того, как 7-уровневая модель OSI показалась кому-то блеском, мы использовали многоуровневый подход и должны были придумывать имена на каждом уровне для блоков.
Мы использовали блоки, сегменты, порции, разделы и различные другие имена, которые просто указывали на вещь фиксированной длины. Возможно, что куча имела похожее происхождение:
Кэрол: «Привет, Боб, как называть структуру данных, которая просто выделяет случайные биты памяти из большой области?»
Боб: «А как насчет« кипящей кучи конского навоза »?»
Кэрол: «Спасибо, Боб, я просто выберу« кучу », если с тобой все в порядке. Кстати, как дела с разводом?»