Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Visual C++ (DevStudio) - Out of memory / 12 сообщений из 12, страница 1 из 1
12.01.2005, 18:18
    #32861964
Cергей1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
Здравствуйте.
Вопрос такой:
Программа работает абсолютно корректно на сравнительно небольших объемах данных (около сотни).
НО!
При задании большого (десятки тысяч) объема данных появляется сообщение "Out of memory"
Думаю, используется стандартная модель памяти и в последнем случае данные не влезают в допустимый диапазон. К сожалению все данные нужно держать вместе, а не читать кусками, кроме того используется тип long double, иначе точности не хватит.
Как можно увеличить допустимый диапазон или снять на него ограничение совсем, т.е. использовать "HUGE в Win32"?
Заранее спасибо.
...
Рейтинг: 0 / 0
12.01.2005, 18:48
    #32862024
Serega128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
Проблема не в количестве данных, а в коде. Переполнение какое-то и т.д.
Приведи, постораюсь помочь.
...
Рейтинг: 0 / 0
12.01.2005, 23:51
    #32862206
hell
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
Попробуйте увеличить размер стека в опциях компилятора.


"Прежде чем убить человека, узнай, нет ли у него влиятельных родственников" (с) Библия
...
Рейтинг: 0 / 0
13.01.2005, 07:47
    #32862323
Guest?
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
мне тоже кажется что проблема все таки в коде .. а не в опциях компилятора ..
...
Рейтинг: 0 / 0
13.01.2005, 10:46
    #32862624
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
Код в студию!
...
Рейтинг: 0 / 0
13.01.2005, 21:50
    #32864120
Cергей1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
Вообщем, облом происходит в этой точке (ставил breakpoint-ы)
a=new long double* [m];
for ( i=0;i<m;i++)
{
a =new long double[n];
};

где m=11000
n=130000
...
Рейтинг: 0 / 0
13.01.2005, 21:53
    #32864121
Cергей1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
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
...
Рейтинг: 0 / 0
13.01.2005, 22:13
    #32864131
Ivan:M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
Cергей1111К сожалению все данные нужно держать вместе, а не читать кусками, кроме того используется тип long double, иначе точности не хватит.

Здравствуйте, Сергей!

Есть одна небольшая проблема в вашем коде.

11000 * 130000000 * sizeof(long double) = 11440000000000 b ~ 10654 Gb памяти. Я не знаю какими аппаратными ресурсами вы располагаете, но боюсь что опции компилятора вам не помогут.
...
Рейтинг: 0 / 0
14.01.2005, 14:41
    #32865199
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
Cергей1111

a=new long double* [m]; // вот в этом месте тратится куча памяти -44000 byte в данном случае


for ( i=0;i<m;i++)
{
a =new long double[n];
// в
};

где m=11000
n=130000


Зачем использовать массив указателей ? используйте двумерный массив.
...
Рейтинг: 0 / 0
14.01.2005, 15:07
    #32865308
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
MasterZivЗачем использовать массив указателей ? используйте двумерный массив.
Просветите меня глупого:
что же, в С++ двумерный массив не является массивом указателей (т.е. a[m][n] != m x *a[n]) ?
А то умные книжки говорят как раз обратное...
...
Рейтинг: 0 / 0
14.01.2005, 16:05
    #32865490
www.fun4me.narod.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
>> что же, в С++ двумерный массив не является массивом указателей (т.е. a[m][n] != m x *a[n]) ?

Память надо выделять одним большим куском и освобождать так же. В умных книжках этого не написано?
...
Рейтинг: 0 / 0
14.01.2005, 18:30
    #32865791
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (DevStudio) - Out of memory
Станислав C. MasterZivЗачем использовать массив указателей ? используйте двумерный массив.
Просветите меня глупого:
что же, в С++ двумерный массив не является массивом указателей (т.е. a[m][n] != m x *a[n]) ?
А то умные книжки говорят как раз обратное...


Не является. двумерный массив объявляется так :

double aaa[1234][34536];

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

aaa [j];

а придется выделять как одномерный массив и писать

aaa[i*N+j];
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Visual C++ (DevStudio) - Out of memory / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]