Как сделать поддержку больших массивов в MS VC
От: ilven  
Дата: 19.10.06 12:14
Оценка:
Доброго времени суток! Подскажите пожалуйста имеется массив
double incidence[maxdim][maxdim] и при значении maxdim = 10000 начинаються проблемы в виде зависаний а при дальнейшем увеличении при компиляции (MS VC 7.1) выдается ошибка:
LINK : fatal error LNK1248: image size (9A1E7000) exceeds maximum allowable size (80000000). Что можно сделать?
Re: Как сделать поддержку больших массивов в MS VC
От: Ovl Россия  
Дата: 19.10.06 12:18
Оценка:
Здравствуйте, ilven, Вы писали:

I>Доброго времени суток! Подскажите пожалуйста имеется массив

I>double incidence[maxdim][maxdim] и при значении maxdim = 10000 начинаються проблемы в виде зависаний а при дальнейшем увеличении при компиляции (MS VC 7.1) выдается ошибка:
I>LINK : fatal error LNK1248: image size (9A1E7000) exceeds maximum allowable size (80000000). Что можно сделать?

выделять память динамически
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
Re: Как сделать поддержку больших массивов в MS VC
От: SergH Россия  
Дата: 19.10.06 12:19
Оценка:
Здравствуйте, ilven, Вы писали:

I>Доброго времени суток! Подскажите пожалуйста имеется массив

I>double incidence[maxdim][maxdim] и при значении maxdim = 10000 начинаються проблемы в виде зависаний а при дальнейшем увеличении при компиляции (MS VC 7.1) выдается ошибка:
I>LINK : fatal error LNK1248: image size (9A1E7000) exceeds maximum allowable size (80000000). Что можно сделать?

Свой класс. Если действительно нужно столько памяти — выделять её динамически, желательно — функцией VirtualAlloc[Ex]. А если массив разряжённый, можно и сэкономить.
Делай что должно, и будь что будет
Re: Как сделать поддержку больших массивов в MS VC
От: Aleksey Pashko Украина about:blank
Дата: 19.10.06 17:55
Оценка:
Здравствуйте, ilven, Вы писали:

I>Доброго времени суток! Подскажите пожалуйста имеется массив

I>double incidence[maxdim][maxdim]
небось глобальным объявил?!

I>и при значении maxdim = 10000 начинаються проблемы в виде зависаний а при дальнейшем увеличении при компиляции (MS VC 7.1) выдается ошибка:

при создании исполняемого модуля линкер пытается сразу зарезервировать место в секции .data для всего твоего массива... прикинь какого размера должен быть твой ехе-шник! т.е. то что ты назвал "зависаем" есть не что иное, как попытка линкера сгенерить файл размером около гига! (10 000 * 10 000 * sizeof(double))

I>LINK : fatal error LNK1248: image size (9A1E7000) exceeds maximum allowable size (80000000).

а здесь он уже и не пытается ничего создавать, прикинув сколько это всё будет весить...

I>Что можно сделать?

как уже говорилось — выделяй память из кучи!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Как сделать поддержку больших массивов в MS VC
От: IID Россия  
Дата: 19.10.06 20:45
Оценка:
Здравствуйте, ilven, Вы писали:

I>Доброго времени суток! Подскажите пожалуйста имеется массив

I>double incidence[maxdim][maxdim] и при значении maxdim = 10000 начинаються проблемы в виде зависаний а при дальнейшем увеличении при компиляции (MS VC 7.1) выдается ошибка:
I>LINK : fatal error LNK1248: image size (9A1E7000) exceeds maximum allowable size (80000000). Что можно сделать?

на 32 битах ничего. 2Гб (0x80000000) предел виртуальной адресации для процесса. Можно поиграть с ключом /3Gb. И вообще странно, размер такого массива что-то около 762мб, если double 8-ми байтовый. Как у вас 2гб получилось ?
kalsarikännit
Re[2]: Как сделать поддержку больших массивов в MS VC
От: Aleksey Pashko Украина about:blank
Дата: 20.10.06 13:49
Оценка:
Здравствуйте, IID, Вы писали:

IID>на 32 битах ничего.

А как же AWE???

IID>2Гб (0x80000000) предел виртуальной адресации для процесса. Можно поиграть с ключом /3Gb. И вообще странно, размер такого массива что-то около 762мб, если double 8-ми байтовый. Как у вас 2гб получилось?

я предполагаю ответ скрыт в этой строке...

double incidence[maxdim][maxdim] и при значении maxdim = 10000 начинаються проблемы в виде зависаний а при дальнейшем увеличении при компиляции (MS VC 7.1) выдается ошибка:
LINK : fatal error LNK1248: image size (9A1E7000) exceeds maximum allowable size (80000000).

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Как сделать поддержку больших массивов в MS VC
От: _Winnie Россия C++.freerun
Дата: 20.10.06 19:25
Оценка:
Здравствуйте, ilven, Вы писали:

I>Доброго времени суток! Подскажите пожалуйста имеется массив

I>double incidence[maxdim][maxdim] и при значении maxdim = 10000 начинаються проблемы в виде зависаний а при дальнейшем увеличении при компиляции (MS VC 7.1) выдается ошибка:
I>LINK : fatal error LNK1248: image size (9A1E7000) exceeds maximum allowable size (80000000). Что можно сделать?

А ты уверен, что ты хочешь выделить гигабайт памяти? И прога не зависнет на таких объёмах информации?
Если же тебе позарез нужно именно 10000 на 10000, и у тебя два гига на борту, то выделяй память для подмассивов динамически —

double *incidence[10000];
for (int i = 0; i < 10000; ++i)
    incidence[i] = new double[10000];
Правильно работающая программа — просто частный случай Undefined Behavior
Re[2]: Как сделать поддержку больших массивов в MS VC
От: _Winnie Россия C++.freerun
Дата: 20.10.06 19:26
Оценка: -1
Здравствуйте, _Winnie, Вы писали:

_W>Здравствуйте, ilven, Вы писали:


Да, если массив разрешеный — то возможно тебя удовлетворит

std::map<std::pair<int, int>, double>
Ещё можно заменить double на float или fixed point short int.
Правильно работающая программа — просто частный случай Undefined Behavior
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.