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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ограничение размра выделяемой памяти 
V
    Опции темы
mrhell
Дата 24.5.2008, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



собственно использую оператор new

pVertex = new Vertex[DimX*DimY];

Vertex - 32 байта
При попытке выделить память под очень большое число вертексов (10000х4145 например) вылетает, хотя на машинке стоит 2 гига.
Есть ли какие либо ограничения в винде на размер выделяемого блока?
PM MAIL   Вверх
rrrFer
Дата 24.5.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



mrhell, 
некоторый объем памяти винда держит для своих нужд(у меня около 200 метров - проверял),
попробуй увеличить файл подкачки, хотя врядли поможет, потому что выделяется память под одно приложение.
а у тебя сдается мне надо память под массив выделить? - тогда лучше используй динамический список, возможно не в выделении памяти косяк а в размере массива, там точно есть ограничения - не знаю как сейчас на когда-то вообще максимальная размерность массива была 32 элемента, потому их и делали десятимерными smile

Это сообщение отредактировал(а) rrrFer - 24.5.2008, 12:34
PM MAIL WWW ICQ   Вверх
bronislav
Дата 24.5.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Насколько, я знаю ограничения не в винде, а в шине адреса. Если у тебя 32 битная архитектура, то максимально ты можешь выделить около 3 гигов.

Теперь относительно твоей ошибки. Попробуй обрабатывать исключения, при выделение памяти - получишь дополнительную информацию относительно ошибки.




--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
jonie
Дата 24.5.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



для winXP справедливо только 2-а гига. для серверных 32битных около 3-х.
нижние 2-а гига это под драйвера, и, например, архаичности от PCI оставшиеся (видя, кстати, "жрет" 256 мег вроде - гляньте в диспетчере устройств используемые адреса)....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
W4FhLF
Дата 24.5.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Цитата(mrhell @  24.5.2008,  10:54 Найти цитируемый пост)
Vertex - 32 байтаПри попытке выделить память под очень большое число вертексов (10000х4145 например)


Нихрена себе. 

10000х4145х32 = 1.326.400.000 байт

Да у меня Crysis меньше кушает smile Мне кажется ты решаешь свою задачу неверным способом. Да вообще держать в памяти одновременно больше 40 млн. вершин - это какая задача такого требует? Если твоя задача действительно не может быть решена иначе с выполнением критичных требований, то можно посоветовать поставить гигов 16 памяти и x64 ОС. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
rrrFer
Дата 24.5.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



W4FhLF, 
Цитата

Нихрена себе. 

я так тоже подумал,а потом вспомнил что лаба у нас была по ОС - выделить всю память системы.
Интересно заметить что больше 2.4 Гб под ХР не выделяется(как файл подкачки не увеличивай).
были также люди, которые решали это с помощью массива, однако использовали при этом многомерный массив(наверно размерность массива не позволяла иначе)
PM MAIL WWW ICQ   Вверх
mrhell
Дата 26.5.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да, не совсем по верному пути пошел - надо было прореживать точки, тогда и миллиона не останется)) (с рельефом в 3д работаю).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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