![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
chaos |
|
||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
что-то я тебе не верю! ![]() если все же правдо, то придется переписывать на асм куски для "смены страниц". а вообще я бы не занимался мазахизмом а выбрал режим в которм есть пара страниц и ВСЕ!
|
||||
|
|||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
Я пишу в режиме 13h(VGA) - наверняка всем до боли знакомом. Это пожалуй самый удобный режим, но только вот проблема - всего одна видео страница...
Что касается стандартной библиотеки graphics.h - насколько помню корректно работать с видео страницами там можно только в одном режиме - причем довольно убогом(16 цветов + нестандартное разрешение экрана)... вот такие пироги... В общем задача-то вроде не сложная, просто память выделить, а не получается... HELP. |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
Да, кстати, забейте вы на эти альтернативные пути реш-ия проблемы. Мне конкретно нужно память выделить. Другие гр. режимы - это усложнение программы(не дай бог ещё программирование в защищенном режиме), алгоритма, как следствие - тормоз программы и возможно некорректная работа с различными видео картами(это я по поводу SVGA и X-MODE). Там проблем еще больше(в др. гр. режимах), а тут одна...
Блин, да видел я, люди выделяли столько памяти(давно это было), а сейчас сам не могу, что за... |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
Сейчас еще один баг нашёл!!! Когда спрайты + прога занимают в памяти 64кб(т.е. полностью заполняют сегмент программы), прога отказывается дальше выделять память... т.е. много спрайтов сделать - никак... что за шляпа?!?!?!? Так что даже переход в др. видео режим - не есть решение проблемы... Я даже динамический спрайт создать не смогу(ну разве что из 5-ти кадров
![]() |
|||
|
||||
regis |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 12.12.2005 Где: Москва, Россия Репутация: 2 Всего: 7 |
Как я в общем и подозревал, malloc у тебя почему-то работает с near heap -- отсюда все проблемы.
Попробуй farmalloc / farfree. --------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой. |
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
DaJunior, а ты точно пробовал объявлять far - массив, т.е.
Можно попробовать вместо far написать huge. Проверить не могу, BC++3.1 под рукой нет, но вроде должно работать. |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
Вот, попробовал:
///////////////////////////////////////////////////////////// void main() { clrscr(); char far *p; p = (char *) farmalloc(64000); printf("seg = %x off = %x adr = %x\n",FP_SEG(p),FP_OFF(p),p); getch(); farfree(p); } ///////////////////////////////////////////////////////////// Ни в какую, после farmalloc указатель остается пустой... если выделять 60000 байт, то все ок. Думаю проблема в компиляторе. Попробуйте кто-нибудь(кому не лень) скомпилить у себя эту прогу(тока под дос есесно ![]() |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Глава 4. Справочник по работе с DOS /Управление памятью в DOS/Видео-функции/...
А в чем отличие защищенного режима от реального? ![]() |
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
DaJunior, объяви
Вроде, должно работать. |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
baronp - чет никак...
bel_nikita - спасибо огромное, буду изучать! |
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
DaJunior, у меня все работает. Что хоть за ошибку он тебе выдает?
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
в защищенном режиме процессы защищены от взаимного влияния. В этом режиме процессором поддерживается 2 вида защиты: по привилегиям и по доступу к памяти -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
baronp,
прога выдает: seg = 0 off=0 adr =0 следов-но память не выделена, вот! |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Подтверждаю, в BC 3.1 ни new char[320*200], ни malloc(320*200) в моделях памяти large и huge, не выделяют память.
DaJunior Придется пользоваться allocmem'ом. ![]() Хотя, на твоем месте, я бы поменял ОС. ![]() |
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
DaJunior, еще раз говорю: массив надо объявлять статически. Динамически и вправду не выделяется.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |