Другие языки программирования и технологии

Вопрос о стеке и куче

Правильно я понимаю, что память стека - это память оперативная, а кучи - виртуальная, т. е. та что выделяется винчестером?
Логически и для стека, и для кучи память выделяется в одном и том же адресном пространстве программы (каждая программа имеет своё собственное независимое от других программ адресное пространство). Какая именно часть адресного пространства будет отведена для кучи, а какая для стека определяется особенностями конкретного компилятора и настройками проекта/программы.

Операционная система - используя встроенные в процессор механизмы - назначает участкам адресного пространства программы блоки RAM. При этом объём выделенной физической памяти может быть куда меньше адресного пространства программы, а один и тот же блок RAM может использоваться для разных участков адресного пространства разных программ. Это достигается за счёт того, что не используемые в данный момент участки адресных пространств программ скидываются на диск и при необходимости восстанавливаются с диска.
Бачаи Бедил
Бачаи Бедил
89 804
Лучший ответ
Александр Пискун То есть память таки выделяется оперативная?
Не правильно!
Это же не трудно!
Mirza Rasuloglu
Mirza Rasuloglu
57 287
Александр Пискун А как тогда?
Это разные понятия
Оперативная память - это физическая память. Модули оперативной памяти можно увидеть и потрогать руками.
Виртуальная память - это возможность ОС, поддерживаемая процессором.
Работа стека поддерживается процессором. Есть специальные команды работы со стеком.
Куча - это чисто программная штука. Куча не поддерживается аппаратно.
Shamil Ahmatdinov
Shamil Ahmatdinov
58 065
Александр Пискун Поясните про виртуальную память, не очень понятно про возможность процессора, эта возможность должна же где-то реализовываться так?
Никто не знает где в данный момент находится память процесса, только ОС.
Может находиться и физически в оперативной памяти, а может находиться и на диске в файле подкачки.
Стек и куча это разные понятия, одинаковое в них только абстракция. Ни стек, ни куча не привязаны к железкам.
Александр Пискун Как выходит так, что этого никто не знает? Программа же пишется человеком, как и ос, они должны были придумать же где будет память выделяться