Электронный Шумахер
В досовские времена был один весьма популярный расширитель защищенного режима. Для поколения «Пепси» объясню: нужен он был для того, чтобы из ДОС с её 640 килобайтами запускать программы, которым нужны мегабайты памяти. Стал выпадать расширитель на нашей программе в осадок с переполнением стека, и пришлось мне посидеть недельку в отладчике, выясняя причину. А когда выяснил — выпал в осадок сам.
Итак, количество описателей сегментов памяти ограничено. У каждого описателя сегмента есть флаг, занят ли этот кусок памяти. Как найти свободный сегмент? Эти гении соорудили из сегментов закольцованный список и устроили рекурсивный обход. Если не было ни одного свободного куска памяти, программа нарезала круги по кольцевому списку, пока не кончался стек. Радует одно: если бы программеры были умнее, программа крутилась бы в этом списке вечно этаким электронным Шумахером.
Кто угадает фирму? Остальным после паузы сообщу: Borland и её rtm.exe.