
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
12.01.2005, 18:18
|
|||
|---|---|---|---|
|
|||
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
Здравствуйте. Вопрос такой: Программа работает абсолютно корректно на сравнительно небольших объемах данных (около сотни). НО! При задании большого (десятки тысяч) объема данных появляется сообщение "Out of memory" Думаю, используется стандартная модель памяти и в последнем случае данные не влезают в допустимый диапазон. К сожалению все данные нужно держать вместе, а не читать кусками, кроме того используется тип long double, иначе точности не хватит. Как можно увеличить допустимый диапазон или снять на него ограничение совсем, т.е. использовать "HUGE в Win32"? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.01.2005, 18:48
|
|||
|---|---|---|---|
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
Проблема не в количестве данных, а в коде. Переполнение какое-то и т.д. Приведи, постораюсь помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.01.2005, 23:51
|
|||
|---|---|---|---|
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
Попробуйте увеличить размер стека в опциях компилятора. "Прежде чем убить человека, узнай, нет ли у него влиятельных родственников" (с) Библия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.01.2005, 07:47
|
|||
|---|---|---|---|
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
мне тоже кажется что проблема все таки в коде .. а не в опциях компилятора .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.01.2005, 10:46
|
|||
|---|---|---|---|
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
Код в студию! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.01.2005, 21:50
|
|||
|---|---|---|---|
|
|||
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
Вообщем, облом происходит в этой точке (ставил breakpoint-ы) a=new long double* [m]; for ( i=0;i<m;i++) { a =new long double[n]; }; где m=11000 n=130000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.01.2005, 21:53
|
|||
|---|---|---|---|
|
|||
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
Cергей1111Вообщем, облом происходит в этой точке (ставил breakpoint-ы) a=new long double* [m]; for ( i=0;i<m;i++) { a =new long double[n]; }; где m=11000 n=130000 Извините, ошибся n=130000000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.01.2005, 22:13
|
|||
|---|---|---|---|
|
|||
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
Cергей1111К сожалению все данные нужно держать вместе, а не читать кусками, кроме того используется тип long double, иначе точности не хватит. Здравствуйте, Сергей! Есть одна небольшая проблема в вашем коде. 11000 * 130000000 * sizeof(long double) = 11440000000000 b ~ 10654 Gb памяти. Я не знаю какими аппаратными ресурсами вы располагаете, но боюсь что опции компилятора вам не помогут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.01.2005, 14:41
|
|||
|---|---|---|---|
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
Cергей1111 a=new long double* [m]; // вот в этом месте тратится куча памяти -44000 byte в данном случае for ( i=0;i<m;i++) { a =new long double[n]; // в }; где m=11000 n=130000 Зачем использовать массив указателей ? используйте двумерный массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.01.2005, 15:07
|
|||
|---|---|---|---|
|
|||
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
MasterZivЗачем использовать массив указателей ? используйте двумерный массив. Просветите меня глупого: что же, в С++ двумерный массив не является массивом указателей (т.е. a[m][n] != m x *a[n]) ? А то умные книжки говорят как раз обратное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.01.2005, 16:05
|
|||
|---|---|---|---|
|
|||
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
>> что же, в С++ двумерный массив не является массивом указателей (т.е. a[m][n] != m x *a[n]) ? Память надо выделять одним большим куском и освобождать так же. В умных книжках этого не написано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.01.2005, 18:30
|
|||
|---|---|---|---|
Visual C++ (DevStudio) - Out of memory |
|||
|
#18+
Станислав C. MasterZivЗачем использовать массив указателей ? используйте двумерный массив. Просветите меня глупого: что же, в С++ двумерный массив не является массивом указателей (т.е. a[m][n] != m x *a[n]) ? А то умные книжки говорят как раз обратное... Не является. двумерный массив объявляется так : double aaa[1234][34536]; Правда, такой массив не вдруг выделишь динамически, т.е. тебе не получиться писать адресацию в нем как aaa [j]; а придется выделять как одномерный массив и писать aaa[i*N+j]; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2033851]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 206ms |
| total: | 341ms |

| 0 / 0 |
