Новости Большое интервью с HotA Crew - часть 2
  • 1.109
  • 0
HotA Crew о Кронверке и будущих обновлениях (часть 2) Какие герои будут вести армии Кронверка? Герои-воины зовутся Вожди, маги — Старейшины. Их параметры и способности подчеркнут сильные стороны...
Новости Большое интервью с HotA Crew - часть 1
  • 945
  • 0
HotA Crew о Кронверке и будущих обновлениях Важно: весь контент по Кронверку и системе событий находится в разработке, и может ещё поменяться. Итак, следующим городом будет Кронверк. Почему...
С Новым 2025 годом!
  • 2.617
  • 18
Вот и завершается этот год - местами странный, местами крутой, но точно запоминающийся, полный неожиданностей и ярких моментов. Мы благодарны вам за то, что вы были рядом, за все наши совместные...
Новости В Heroes of Might and Magic 3 теперь можно поиграть в веб-браузере
  • 1.384
  • 3
Совсем недавно энтузиасты из России смогли портировать игру HoMM3 в браузер. Причем веб-версия позволяет пройти все сюжетные компании и даже поиграть по сети. Чтобы сыграть в классику необходимо...

В процессе Вылетает при поптыки войти в дом Ватраса и верхний город

Riptech

Гвардеец
Участник форума
Регистрация
7 Окт 2015
Сообщения
1.702
Реакции
445
Баллы
247
Лучшие ответы
2
#31
Зарезервированная память не жрёт ресурсы, пока приложение её явно не запросит (мол, выделите-ка мне памяти вон по тому зарезервированному адресу, а не абы какую).
Это так не работает. Адресное пространство приложения ничего общего с адресным пространством, доступным ос, не имеет, ха исключением очень особых случаев, к которым пользовательские приложения не относятся. Для ос это именно что "абы какая память", ей все равно из какой области ей выделять память для приложения, а приложению все равно из какой области ей память дали, у приложения собственная независимая от ос адресация.
 

TopLayer

Наемник
Участник форума
Регистрация
22 Апр 2017
Сообщения
951
Реакции
403
Баллы
196
Лучшие ответы
27
#32
Ну и зарезервированная память
Использует её приложение активно, или запросило, но пока ничего с ней не делает - это дело приложения.
Я с этим не согласен. Зарезервированную память нельзя использовать из приложения, пока явно у ОСи её не запросить.
Зарезервированная память не используется (не жрёт ресурсы ПК, но занимает весьма ограниченную для Готики виртуальную память), просто виртуальные адреса резервируются. Обычные запросы памяти из приложения никогда не вернут блоки памяти с зарезервированными виртуальными адресами.

Резервирование обычно делается для алгоритмов, которые требуют чтобы данные находились по смежным виртуальным адресам, но самих данных пока нету, поэтому зачем сразу грузить ПК.
 

Riptech

Гвардеец
Участник форума
Регистрация
7 Окт 2015
Сообщения
1.702
Реакции
445
Баллы
247
Лучшие ответы
2
#33
Я с этим не согласен. Зарезервированную память нельзя использовать из приложения, пока явно у ОСи её не запросить.
Зарезервированная память не используется (не жрёт ресурсы ПК, но занимает весьма ограниченную для Готики виртуальную память), просто виртуальные адреса резервируются. Обычные запросы памяти из приложения никогда не вернут блоки памяти с зарезервированными виртуальными адресами.

Резервирование обычно делается для алгоритмов, которые требуют чтобы данные находились по смежным виртуальным адресам, но самих данных пока нету, поэтому зачем сразу грузить ПК.
Что значит по-твоему "не использует ресурсы пк"? Для ос зарезервированная приложением память недоступна для предоставления другим приложениям (в штатной ситуации, по крайней мере), а значит использует ресурсы пк.
 

TopLayer

Наемник
Участник форума
Регистрация
22 Апр 2017
Сообщения
951
Реакции
403
Баллы
196
Лучшие ответы
27
#34
Что значит по-твоему "не использует ресурсы пк"?
C++:
byte* someArray = new byte[65536];
// эта память жрёт ресурсы ПК, даже если программист хер забил на этот массив после создания

LPVOID ptr = VirtualAlloc(NULL, 65536, MEM_RESERVE, PAGE_READWRITE);
// этот вызов не жрёт ресурсы ПК, но вот такой указатель, гарантированно не будет равен ptr
LPVOID anotherPtr = new byte[655536];
assert(anotherPtr != ptr);
 

Riptech

Гвардеец
Участник форума
Регистрация
7 Окт 2015
Сообщения
1.702
Реакции
445
Баллы
247
Лучшие ответы
2
#35
C++:
byte* someArray = new byte[65536];
// эта память жрёт ресурсы ПК, даже если программист хер забил на этот массив после создания

LPVOID ptr = VirtualAlloc(NULL, 65536, MEM_RESERVE, PAGE_READWRITE);
// этот вызов не жрёт ресурсы ПК, но вот такой указатель, гарантированно не будет равен ptr
LPVOID anotherPtr = new byte[655536];
assert(anotherPtr != ptr);
А теперь по человечески: первый случай сразу транслируется в физическую память, а второй только когда приложение реально начнет использовать зарезервированное. Это не резерв памяти, это резерв адресов.
Извини, я не кодер, я одмен, у меня виртуальная память это объем, а не резиновое адресное пространство. И объем этот равен объему ram + swap, и больше быть не может. Соответственно резерв памяти = резерв объема. А с адресами отдельная песня, конечно.
 

TopLayer

Наемник
Участник форума
Регистрация
22 Апр 2017
Сообщения
951
Реакции
403
Баллы
196
Лучшие ответы
27
#36
А теперь по человечески: первый случай сразу транслируется в физическую память
Да
а второй только когда приложение реально начнет использовать зарезервированное
Да, когда вызовет VirtalAlloc с MEM_COMMIT
у меня виртуальная память это объем, а не резиновое адресное пространство
Ну, в вики говорится, что "виртуальная память" это способ управления памятью. Так что с этот термин мы оба неправильно употребляем.
 

Riptech

Гвардеец
Участник форума
Регистрация
7 Окт 2015
Сообщения
1.702
Реакции
445
Баллы
247
Лучшие ответы
2
#37
Ну, в вики говорится, что "виртуальная память" это способ управления памятью. Так что с этот термин мы оба неправильно употребляем.
Нет, всё правильно, это способ организации памяти, просто мы акцентируемся на тех её преимуществах, которые нам ближе.
 
Сверху Снизу