Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с выделением памяти 
:(
    Опции темы
chaos
Дата 9.6.2006, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



Цитата(DaJunior @ 9.6.2006,  06:55)
но вот беда, в том режиме, в кот-ом пишу я - их просто нет

что-то я тебе не верю! smile что бы в таком режиме была всего одна страница.

если все же правдо, то придется переписывать на асм куски для "смены страниц". а вообще я бы не занимался мазахизмом а выбрал режим в которм есть пара страниц и ВСЕ!
Код

for(int nFrame = 0; true; nFrame++)
{
    setactivepage(nFrame & 1);
    setvisualpage((nFrame & 1) ^ 1);
    //.......
}
 
PM WWW   Вверх
DaJunior
Дата 9.6.2006, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 8.6.2006
Где: за компьютерным с толом

Репутация: -1
Всего: нет



Я пишу в режиме 13h(VGA) - наверняка всем до боли знакомом. Это пожалуй самый удобный режим, но только вот проблема - всего одна видео страница...

Что касается стандартной библиотеки graphics.h - насколько помню корректно работать с видео страницами там можно только в одном режиме - причем довольно убогом(16 цветов + нестандартное разрешение экрана)... вот такие пироги...

В общем задача-то вроде не сложная, просто память выделить, а не получается... HELP. 
PM MAIL   Вверх
DaJunior
Дата 9.6.2006, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 8.6.2006
Где: за компьютерным с толом

Репутация: -1
Всего: нет



Да, кстати, забейте вы на эти альтернативные пути реш-ия проблемы. Мне конкретно нужно память выделить. Другие гр. режимы - это усложнение программы(не дай бог ещё программирование в защищенном режиме), алгоритма, как следствие - тормоз программы и возможно некорректная работа с различными видео картами(это я по поводу SVGA и X-MODE). Там проблем еще больше(в др. гр. режимах), а тут одна...

Блин, да видел я, люди выделяли столько памяти(давно это было), а сейчас сам не могу, что за... 
PM MAIL   Вверх
DaJunior
Дата 9.6.2006, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 8.6.2006
Где: за компьютерным с толом

Репутация: -1
Всего: нет



Сейчас еще один баг нашёл!!! Когда спрайты + прога занимают в памяти 64кб(т.е. полностью заполняют сегмент программы), прога отказывается дальше выделять память... т.е. много спрайтов сделать - никак... что за шляпа?!?!?!? Так что даже переход в др. видео режим - не есть решение проблемы... Я даже динамический спрайт создать не смогу(ну разве что из 5-ти кадров smile )... Я ограничен 64 кб!!!!!!! ПОМОГИТЕ КТО-НИБУДЬ!!!!!!! 
PM MAIL   Вверх
regis
Дата 9.6.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



Как я в общем и подозревал, malloc у тебя почему-то работает с near heap -- отсюда все проблемы.
Попробуй farmalloc / farfree.
 
--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
likehood
Дата 9.6.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 8
Всего: 24



DaJunior, а ты точно пробовал объявлять far - массив, т.е.
Код

far char buf[320*200];

Можно попробовать вместо far написать huge. Проверить не могу, BC++3.1 под рукой нет, но вроде должно работать. 
PM MAIL   Вверх
DaJunior
Дата 9.6.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 байт, то все ок. Думаю проблема в компиляторе. Попробуйте кто-нибудь(кому не лень) скомпилить у себя эту прогу(тока под дос есесноsmile) Сообщите о резалтах плз. 
PM MAIL   Вверх
bel_nikita
Дата 9.6.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Глава 4. Справочник по работе с DOS /Управление памятью в DOS/Видео-функции/...

Цитата
(не дай бог ещё программирование в защищенном режиме), алгоритма, как следствие - тормоз программы и возможно некорректная работа 

А в чем отличие защищенного режима от реального? smile 
 


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
likehood
Дата 9.6.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 8
Всего: 24



DaJunior, объяви 
Код
char far buf[320*200L]; 

Вроде, должно работать. 
PM MAIL   Вверх
DaJunior
Дата 9.6.2006, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 8.6.2006
Где: за компьютерным с толом

Репутация: -1
Всего: нет



baronp - чет никак... 
bel_nikita - спасибо огромное, буду изучать! 
PM MAIL   Вверх
likehood
Дата 9.6.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 8
Всего: 24



DaJunior, у меня все работает. Что хоть за ошибку он тебе выдает? 
PM MAIL   Вверх
MAKCim
Дата 10.6.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

А в чем отличие защищенного режима от реального?

в защищенном режиме процессы защищены от взаимного влияния. В этом режиме процессором поддерживается 2 вида защиты: по привилегиям и по доступу к памяти 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
DaJunior
Дата 10.6.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 8.6.2006
Где: за компьютерным с толом

Репутация: -1
Всего: нет



baronp, 
прога выдает:

seg = 0 off=0 adr =0

следов-но память не выделена, вот! 
PM MAIL   Вверх
bsa
Дата 10.6.2006, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Подтверждаю, в BC 3.1 ни new char[320*200], ни malloc(320*200) в моделях памяти large и huge, не выделяют память.

DaJunior
Придется пользоваться allocmem'ом. smile
Хотя, на твоем месте, я бы поменял ОС. smile
 
PM   Вверх
likehood
Дата 11.6.2006, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 8
Всего: 24



DaJunior, еще раз говорю: массив надо объявлять статически. Динамически и вправду не выделяется. 
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1001 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.