выделение памяти в Си...
В книгах по С описывается функция farcalloc, которой мож-
но зарезервировать больше 64К, или всю свободную опера-
тивную память. Но при работе выяснилось, что возникает
другой баръер, где-то после 500К, в самом простом примере.
Помогите пожалуйста, сроки горят При необходимости
могу выслать код.
Все правильно так и должно быть. Это же ДОС.
Цитата:
On 2001-12-13 1847, Anonymous wrote
Посоветуйте кто работал с выделением памяти под Dos.
В книгах по С описывается функция farcalloc, которой мож-
но зарезервировать больше 64К, или всю свободную опера-
тивную память. Но при работе выяснилось, что возникает
другой баръер, где-то после 500К, в самом простом примере.
Помогите пожалуйста, сроки горят При необходимости
могу выслать код.
А чего ты ожидал 640К всего, минус ядро DOS, резиденты и прочее как раз около 500К и получится. Если нужно больше - применяй оверлеи, но одним махом ты себе такой кусок памяти в чистом DOS не откусишь.
Для этого возьми ВС45 и положи на него
PowerPack
После этого возможно создавать приложения
DOS DPMI 16/
Памяти доступно много - наша задача берет до 16 мегов.
Одна особенность - TurboVision нужен
переделаный.
Если нужно - пиши [EMAIL]c2h5oh@beep.ru[/EMAIL]
А еще лучше Console32 приложения.
Подозреваю, что с оверлеями нужно повозиться. Тогда лучший выход Builder (временные трудности - нужен стандартный файл справки). Какими средствами лучше пользоваться для загрузки больших объемов?
Те же malloc, ..., или есть что-то другое?
Ну что вы заладили с этими оверлеями, несколько килобайт с ними только выиграть можно. Адресация дальше 1Мб доступна только в защищенном режиме (после открытия A20, в V86 не будет работать тоже), вот под ним и програмьте. Многие ДОС-овские компиляторы могут компились с каким-нибудь расширителем (Например, Semantec C компилит с dosx32, Digital Mars с Pharlap-ом или тем же dosx-ом). И памать выделяется при этом как обычно malloc-ом.