Добавление чего-то к другому ответу, довольно правильное, но, возможно, не очень полное.
Куча и стек - это два (программных) способа «управления» памятью.Физическая память, как правило, представляет собой плоский массив ячеек, в которых программа может читать и писать.Запущенная программа может использовать эти ячейки по своему усмотрению.Но есть еще что сказать.
1 ^ вещь.Куча полностью программная, в то время как стек также (или в основном) аппаратный.Большинство процессоров имеют аппаратное обеспечение (или инструкцию процессора) для поддержки стека, в то время как большинство (или все?) Не заботятся о куче.Еще больше: есть небольшие встроенные процессоры (или микроконтроллеры), которые имеют отдельную область стека - полностью отличную от других областей памяти, где программа может создать «кучу».
2 ^ вещь.Говоря о «программах», можно / нужно думать, что операционная система (ОС) - это программа, специализирующаяся на управлении ресурсами (включая память), и расширяемая с помощью «приложений» (которые являются программами),В таком сценарии управление стеком и кучей осуществляется совместно с операционной системой и приложениями.
Итак, чтобы ответить на ваш главный вопрос, правильный ответ на 90% следующий: в голом металле у вас уже есть стек - возможно,Вы должны выполнить небольшую инструкцию, чтобы настроить его, но это просто.Но у вас нет кучи, вы должны реализовать ее в своей программе.Сначала вы выделяете часть памяти для использования в качестве стека;и затем вы можете выделить больше памяти для использования в качестве кучи, не забывая, что вы должны сохранить немного памяти для обычных / статических данных.Часть программы, которая управляет кучей, должна знать, что делать, используя, но не ошибочно перезаписывая стек и статические данные, для выполнения своих функций.