![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
People HELP!!!
Нужно память выделить 64000 байт(наверное все поняли зачем ![]() ![]() Пишу значит: ///////////////////////fragment////////////////////////////// char *buf; if(!(buf = new char[320*200])) cout<<"Нифига не получилось!"; ///////////////////////fragment////////////////////////////// Ну оно в принципе и понятно, почему не получилось: сегмент программы всего 64К. Что делать, не знаю, не урезать же прогу до 1.5К(даже больше резать придется), да и что я в этот килобайт умещу... Чего только делать не пробовал, и модель памяти менял... ничего не помогает... Помогите, люди умные, уже 3-ий день голову ломаю... |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
А че за система?
Имхо ограничение на эту цифру было под досом! -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
Под ДОС'ом и пишу... так надо! =)))
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
небось еще и на турбо си?!
зайди в настройки компилятора , где генерация кода и поставь модель памяти Huge, может поможет, я не проверял ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
Я же писал, что модель памяти менял уже, них... не помогает... А Турбо Си - сила! Мне под дос нуно... вот!
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
гед? Я бы не был так оптимистичен дома поиграюсь , потом чет дельное отвечу, на работе нет доса, кса а на два массива разбить нельзя? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Replicator |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 30.4.2006 Где: Outer Heaven Репутация: нет Всего: нет |
Неужели С не может работать с динамической памятью? Сильно сомневаюсь. В TP это называлось "куча" и там можно было выделять память блоками не более 64К. Количество самих блоков ограничивалось только доступной ОС памятью.
Думаю, тут надо использовать что-то вроде getmem(), freemem(). --------------------
|
|||
|
||||
regis |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 12.12.2005 Где: Москва, Россия Репутация: 2 Всего: 7 |
ИМХО, странная ситуация какая-то. В любой модели памяти с far-указателями по дефолту (даже не надо Huge, вполне достаточно Large) все должно прекрасно работать. Единственная возможная причина неудачи --- если память DOS (те самые 640K) вдруг кончилась. Мало вероятно, но... см. вывод команды mem перед запуском программы.
--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой. |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
Ок, спасибо всем... Попробую работать через кучу, напрямую никак не получится, это я уже давно понял... пойду книжки умные читать...
|
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
Нет чета ниче не получается... Я попробовал вот так:
///////////////////////fragment////////////////////////////// char far *p = (char *) malloc(64000); ///////////////////////fragment////////////////////////////// Хотя malloc - по сути - тот же new... Но все та же фигня, не хочет он выделять столько памяти... И по всей видимости выделяет её в near-куче, вместо far-кучи, но это еще пол беды, бог с ней, с near-кучей. Он пытается выделить память по тому же сегменту, что и сама прога висит... понятное дело, там не наберется 64000 байт, если сама прога будет в памяти занимать, пусть даже 2кб... Ведь сегмент программы(как я писал выше) ограничен 64кб(для тугих - 65536 байт)... Как мне заставить комп выделять память по другому сегменту, где уже свободно необходимое мне кол-во памяти??? Я уже всего Касаткина перерыл... Может проблема с компилятором??? хотя я пробовал в инсте - тоже глухо... Может кто сталкивался с этой проблемой??? |
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
может ты массив в стеке выделяешь? Попробуй сделать глобальный массив, при этом не забудь добавить перед ним far:
Кстати, если юзаешь Turbo C++ 3.0, то советую перейти на Borland C++ 3.1 - там глюков меньше. |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
Сейчас попробовал так:
///////////////////// char p[64000]; ///////////////////// с моделью памяти large. Работает, но вот динамический массив - никак... ![]() может кто попробует выделить динамич-ий массив размером 320*200 байт, и пришлет исходник проги... подозреваю, что глючит компилятор... P.S. кстати пишу на Borland C++ 3.1, а не на турбо, как некоторые подумали... |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
Неужели никто не смог разобраться с этим вопросом??? Эй, мега программеры - где вы???
|
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
до боли знакомый размер массива ![]() если нет, то у меня возникло две бредовых идеи 1) попользовать видео память для своих целей ![]() 2) перегрузить new delete (если конечно С++) и работать с диском Добавлено @ 06:40 а если с видео памятью работаешь то зачем тебе еще один массив? |
|||
|
||||
DaJunior |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.6.2006 Где: за компьютерным с толом Репутация: -1 Всего: нет |
1) Да да, мне это нужно для работы с графикой! Кто с ней работал, наверняка знает о видео-страницах, но вот беда, в том режиме, в кот-ом пишу я - их просто нет(так что попользовать видео память - никак)
![]() ![]() 2) работать с диском??? - с хардом чтоли??? нет, это будет конкретный тормоз моей шустрой проге, не для того я оптимизировал весь алгоритм... Может кто-нить еще че подскажет??? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |