В частности, относительно malloc()
, насколько я помню, реализация Borland принимает аргумент размера 16 бит.Библиотека Borland имеет «огромную» модель памяти версии halloc()
(и соответствующий ей hfree()
), которая может выделять большие блоки (больше 64 КБ).
JEMM386 это менеджер расширенной памяти , при котором объем памяти превышает 1 МБ в область «высокой памяти» выше 640 КБ - размер этой области составляет всего 384 КБ, и не все из них доступны для подкачки памяти, что, вероятно, является причиной наблюдаемого вами ограничения в 300 КБ.экспериментом.
Для полного использования ресурсов памяти для кода и данных необходимо использовать DPMI (интерфейс защищенного режима DOS).Программа DPMI - это настоящая программа в 32-битном защищенном режиме с механизмом доступа к API DOS (именно так работала Windows 3.x до того, как Windows 95 стала операционной системой сама по себе, а не в графической среде над DOS).
Программы DPMI запускают процессор в защищенном режиме, а не real .Это немного усложняется тем, что есть два защищенных режима;16-битный защищенный режим 80286 (DPMI16) и 32-битный защищенный режим 80386 (DPMI32).В вашем случае вам нужно иметь дело только с DPMI32.
Для компилятора Borland DPMI поддерживался с помощью инструментов DOS Power Pack .Однако Power Pack был разработан для работы с Borland C ++ 4.02 и 4.5x, а не 5.0. В этом техническом примечании объясняется, как можно использовать Power Pack с BC ++ 5, но не рекомендуется.В нем говорится, что он работает только с инструментами командной строки, а не с IDE.Тем не менее, это другое техническое примечание затем объясняет, как заставить его работать в IDE, но объясняет, что BC ++ 5 RTL не будет работать.В целом, это не похоже на приятный опыт.
Однако нет необходимости вообще задумываться о переходе на Linux - вам просто нужно использовать набор инструментов, который поддерживает DPMI32 и позволяет вам строить свой код как истинный.битовый код в среде DOS.
Подходящие цепочки инструментов могут включать в себя:
Все вышеперечисленное, кроме DJGPP, требует сторонних DOS-удлинителей (хосты DPMI), некоторые из которых перечислены в списке здесь . DJGPP включает в себя расширитель (как описано здесь ), поэтому может быть самым простым выбором, если не самым современным (но не Borland). Обратитесь к документации по инструментальной цепочке, чтобы определить, чтопроблема с теми, которые используют сторонние экстендеры в том, что в то время какКомпилятор может оставаться доступным, расширитель может исчезнуть (как в случае с Digital Mars).