Другие языки программирования и технологии
Вопрос о стеке и куче
Правильно я понимаю, что память стека - это память оперативная, а кучи - виртуальная, т. е. та что выделяется винчестером?
Логически и для стека, и для кучи память выделяется в одном и том же адресном пространстве программы (каждая программа имеет своё собственное независимое от других программ адресное пространство). Какая именно часть адресного пространства будет отведена для кучи, а какая для стека определяется особенностями конкретного компилятора и настройками проекта/программы.
Операционная система - используя встроенные в процессор механизмы - назначает участкам адресного пространства программы блоки RAM. При этом объём выделенной физической памяти может быть куда меньше адресного пространства программы, а один и тот же блок RAM может использоваться для разных участков адресного пространства разных программ. Это достигается за счёт того, что не используемые в данный момент участки адресных пространств программ скидываются на диск и при необходимости восстанавливаются с диска.
Операционная система - используя встроенные в процессор механизмы - назначает участкам адресного пространства программы блоки RAM. При этом объём выделенной физической памяти может быть куда меньше адресного пространства программы, а один и тот же блок RAM может использоваться для разных участков адресного пространства разных программ. Это достигается за счёт того, что не используемые в данный момент участки адресных пространств программ скидываются на диск и при необходимости восстанавливаются с диска.
Александр Пискун
То есть память таки выделяется оперативная?
Не правильно!
Это же не трудно!
Это же не трудно!
Александр Пискун
А как тогда?
Это разные понятия
Оперативная память - это физическая память. Модули оперативной памяти можно увидеть и потрогать руками.
Виртуальная память - это возможность ОС, поддерживаемая процессором.
Работа стека поддерживается процессором. Есть специальные команды работы со стеком.
Куча - это чисто программная штука. Куча не поддерживается аппаратно.
Оперативная память - это физическая память. Модули оперативной памяти можно увидеть и потрогать руками.
Виртуальная память - это возможность ОС, поддерживаемая процессором.
Работа стека поддерживается процессором. Есть специальные команды работы со стеком.
Куча - это чисто программная штука. Куча не поддерживается аппаратно.
Александр Пискун
Поясните про виртуальную память, не очень понятно про возможность процессора, эта возможность должна же где-то реализовываться так?
Никто не знает где в данный момент находится память процесса, только ОС.
Может находиться и физически в оперативной памяти, а может находиться и на диске в файле подкачки.
Стек и куча это разные понятия, одинаковое в них только абстракция. Ни стек, ни куча не привязаны к железкам.
Может находиться и физически в оперативной памяти, а может находиться и на диске в файле подкачки.
Стек и куча это разные понятия, одинаковое в них только абстракция. Ни стек, ни куча не привязаны к железкам.
Александр Пискун
Как выходит так, что этого никто не знает? Программа же пишется человеком, как и ос, они должны были придумать же где будет память выделяться
Похожие вопросы
- Что такое стек и куча? Они абстрактные понятия, или же конкретные? Очень сильно запутался.
- вопрос про стеки и очереди в паскале/с++
- Извините что не по теме но возник вопрос! Почему на проекте куча флудерастов которым только бы умничать?
- Вопрос по С++. Стек
- Можно ли сказать, что стек - временный участок памяти, в котором данные хранятся по принципу LIFO(last in first out)?
- Помогите, пожалуйста, найти ошибку в программе сортировки стека (по убыванию ) на Си.
- Переменные и стек
- Помогите, пожалуйста, работа со стеками в среде С++.
- Что такое стек?
- Нужно в стеке найти первое появление т элемента и поставить его в начало стека. Помогите, пожалуйста!!!