![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Trishi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
Как расчитать размерность массива n*n, чтобы максимально использовать оперативную память в Borland С++?
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Гм... Ну если это дело Borland C++ 3.1, то тогда оперативки у тебя около 640 Кб... квадратный корень из этого дела - 800. Итого - 600-750, я бы посоветовал. Это если массив char. Если int - тогда 300-375.
Если Borland C++ 5.5 и выше, то тогда берешь 80% от размеры оперативки, и делаешь те же самые вычисления. |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
ИМХО.
Думаю при Windows реальный размер именно оперативки, выделенной под конкретную задачу, узнать будет проблематично. Можно узнать ее общий объем, объем виртуалки, а вот, что именно оперативка выделена - это врядли. |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 3 Всего: 43 |
итого 250х250 примерно для char, т.к. немного под другие переменные надо оставить. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Anikmar,
SEH + сканирование пользовательского адресного пространства 0x00000000 - 0x7FFFFFFF (3:1) или 0x00000000 - 0xBFFFFFFF (2:2)
![]() Это сообщение отредактировал(а) MAKCim - 12.5.2007, 11:18 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
W4FhLF,
да без разницы, я особо не в курсе распределения ресурсов в пользовательском адресном пространстве M$ Window$, если она что-то резервирует для нулевых адресов, то да, для увеличения производительности можно отсечь заранее невалидные адреса -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Trishi |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
Откуда вы взяли, что именно 640 Кб? Это не зависит от размера моей оперативы в компе? ![]()
Если честно, невижу связи между размером оперативной памяти и размером указателя ![]() |
||||
|
|||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
не зависит, задача будет выполняться в виртуальном режиме с эмуляцией 1Mb памяти, причем валидным будет только диапозон 0x00000 - 0x9FFFF, что и есть 640Kb 0xA0000 - 0xBFFFF - VGA буфер 0xC0000 - 0xDFFFF - extended area 0xE0000 - 0xFFFFF - BIOS -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Trishi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
А я считала - у меня получилось где-то n=570 для int. Я сначала в байты перевела - получила 655360 байт. Потом на 2 делила потому что в int 2 байта. А потом корень брала. А как у вас получилось такое число? А программе именно в С вообще больше n=180 пишет, что массив слишком велик Это сообщение отредактировал(а) Trishi - 13.5.2007, 18:43 |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Тьфу блин... это же дос-режим... тут int 2 байта, а не 4. Пардон, тогда конечно - порядка 500-600.
А это еще от компилятора зависит и от настроек виртуального режима. Но раз пишет - значит, ему доступно... всего лишь около 180х180 х2 = 64800 байт. Похоже, что в данном случае прав был nezerus. Хотя я тонкостей 16-битного режима не знаю. |
|||
|
||||
dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
Будет даже меньше 640кб, т.к bc++3.1 не умеер работать с указателями больше 64кб.
Поскольку его арифметика указателей не рассчитана на модификацию сегментной части. Поэтому самое удобное - char arr[65536 - 4] Можно, впрочем, сделать собственную обработку операций -- и ++, благо char far *arr = (char far *)farmalloc(65536l * 8) сделает ожидаемое. И компилировать программу лучше непосредственно из дос, т.к борландовская ide занимает 1-ну или 2-е страницы памяти. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
это сколько в граммах? и что есть страница в досе? ![]() не совсем понял, какая связь между занимаемой ide памятью и процессом компиляции? |
|||
|
||||
dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
Сейчас нигде не могу найти но насколько помню в реальном режиме величина, кратная 16 байт - параграф, 65536 - страница.
Никакой я просто описАлся, не компилировать, а запускать. Это сообщение отредактировал(а) dizzy1984 - 14.5.2007, 16:25 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |