Текущий архив: 2011.05.22;
Скачать: CL | DM;
Вниз
Out of memory while expanding memory stream Найти похожие ветки
← →
NieL © (2011-02-11 18:11) [0]изза-чего может возникнуть такая ошибка, памяти хватает
← →
Palladin © (2011-02-11 18:27) [1]если тебе говорят что не хватает, то ее не может хватать, хотя с другой стороны если тебе памяти не хватает, то программе может хватать, ведь скорее всего памяти хватало до этого, а теперь не хватает, и программе не хватает памяти, что бы вспомнить что раньше ей памяти хватало, вот по этому памяти и не хватает
← →
Anatoly Podgoretsky © (2011-02-11 19:11) [2]> Palladin (11.02.2011 18:27:01) [1]
Не хватает, вот он и забыл про это.
← →
Token (2011-02-11 20:08) [3]А почему она возникает при выделении порядка 1Gb?
← →
И. Павел © (2011-02-11 21:02) [4]Не знаю, как экспандится поток, но может быть он сперва выделяет новую память, потом копирует в нее старые данные а затем удаляет старую память? Т.е. когда резервируется новая память, старая может еще не освобождаться. Такой подход, например, может приводить к нехватке памяти при SetLength очень больших массивов, когда памяти еще, казалось бы, хватает.
← →
Token (2011-02-11 21:12) [5]Именно сразу после создания, устанавливается размер порядка 1Gb. И не хотит... Хотя теоретически принципиальных ограничений я не вижу.
← →
Token (2011-02-11 21:18) [6]Уточню - D7
← →
Palladin © (2011-02-11 21:19) [7]все разговоры разговариваете, этим долго можно заниматься...
может на конкретику перейдете, станцуете или код покажете, на худой конец...
я вот взял переменную завел глобальненькую
var
a: array of Integer;
кнопочку кинул на формочку написав в onclick
SetLength(a, 1073741824 div 4);
и как то всем всего хватило
так что можете разговоры о теории разговаривать и дальше, но лично я вашему вранью о чистейшей правде и клятвах на святых бананах не поверю
← →
Token (2011-02-11 21:23) [8]str:=TMemoryStream.Create;
str.SetSize(1500000000);
----
а вот str.SetSize(1600000000); уже не катит
← →
Игорь Шевченко © (2011-02-11 21:27) [9]
> уже не катит
и не покатит
← →
Token (2011-02-11 21:28) [10]Почему?
← →
Игорь Шевченко © (2011-02-11 21:31) [11]
> Почему?
потому что дофига. В несчастные доступные 2гб еще надо впихнуть кучу всего - системные DLL, DLL приложения, само приложение, служебные структуры, и т.д.
проще узнать, сколько доступно и исходить из этого, а не желать странного и плакаться по форумам.
← →
Token (2011-02-11 21:35) [12]Я не плачусь, я спросил.
← →
Игорь Шевченко © (2011-02-11 21:39) [13]
> Я не плачусь, я спросил.
я автора имел в виду, если что
← →
Token (2011-02-11 21:54) [14]Ну на самом деле, я воспользовался случаем для прояснения ) До этого думал что под систему есть 3-ий гиг, и все 2 остальные мои. И как-то не доходило, что все "изолировано" и библиотеки надо отображать в адреса приложения.
← →
Anatoly Podgoretsky © (2011-02-12 10:12) [15]> И. Павел (11.02.2011 21:02:04) [4]
А ты знаешь другой варинт, когда сначала удаляется старая память :-)
← →
Anatoly Podgoretsky © (2011-02-12 10:13) [16]> Palladin (11.02.2011 21:19:07) [7]
Надо - Мамой клянусь
← →
Anatoly Podgoretsky © (2011-02-12 10:14) [17]> Token (11.02.2011 21:23:08) [8]
А это где делаешь? ---- это не проясняет ситуацию
← →
Anatoly Podgoretsky © (2011-02-12 10:15) [18]> Token (11.02.2011 21:35:12) [12]
Ты не спросил, ты пургу несешь
← →
Anatoly Podgoretsky © (2011-02-12 10:16) [19]
> я автора имел в виду, если что
А я обеих и в первую очередь второго.
← →
Leonid Troyanovsky © (2011-02-12 11:32) [20]
> Anatoly Podgoretsky © (12.02.11 10:16) [19]
> > я автора имел в виду, если что
> А я обеих и в первую очередь второго.
И целовался на кухне с обоими.
:)
--
Regards, LVT.
← →
DiamondShark © (2011-02-14 12:49) [21]MemoryStream -- хороший пример плохой абстракции.
Напишите себе стрим на базе файла с атрибутами FILE_ATTRIBUTE_TEMPORARY
or FILE_FLAG_DELETE_ON_CLOSE
А про MemoryStream забудьте как о страшном сне.
Страницы: 1 вся ветка
Текущий архив: 2011.05.22;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.011 c