В Windows 11 до сих пор живёт менеджер памяти из Windows 95 👍
В Windows 11 до сих пор живёт менеджер памяти из Windows 95 👍 Археологи откопали очередную жемчужину: актуальная Windows 11 (вплоть до 26H2) содержит фрагмент кода Windows 95 — механизм совместимости EmulateHeap, дающий старым приложениям доступ к древнему менеджеру памяти. Своим существованием этот динозавр обязан одной игре и одному багу. История началась с SimCity. Игра Maxis не работала в Windows 95 из-за классического бага use-after-free: создатель версии для Windows 3.x Джон Росс случайно допустил ошибку, из-за которой игра считывала память, которую сама же только что освободила. В Windows 3.x это сходило с рук — память после освобождения никуда не исчезала, и игра продолжала читать прежние значения. Когда SimCity перестала работать в бета-версиях Windows 95, Microsoft сделала шаг, который сам Рэймонд Чен позже назовёт легендарным: добавила код, который искал запущенную SimCity, и если находил, менеджер памяти переходил в особый режим и не освобождал память сразу. Обход для SimCity оказался не единичным случаем, в 2010-м инженер Microsoft Рэймонд Чен объяснил, что подобных зависимостей у старых программ хватает. Приложения обращались к освобождённой памяти, рассчитывая, что прежние значения сохранятся, — а в новых версиях Windows, где память управляется иначе, они просто падали. Решением стал EmulateHeap: механизм, перенаправляющий вызовы API кучи (HeapCreate, LocalLock, GlobalReAlloc) на альтернативные реализации, воспроизводящие поведение Windows 95. Костыль до сих пор можно найти в Compatibility Administrator из Windows ADK. Старый код загружается только когда включён для конкретного приложения. Так что Windows 95 в фоне не крутится, но кусочек её души — вполне. 📲 Подписывайтесь на наш канал в MAX
Канал в каталоге Максиметера
2 245 подписчиков · IT и технологии