Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Out of memory while expanding memory stream


Страницы:   1 2

NieL ©   (2011-02-11 18:11:00) 

изза-чего может возникнуть такая ошибка, памяти хватает


DiamondShark   (2011-02-14 12:49:00) [1]

MemoryStream -- хороший пример плохой абстракции.

Напишите себе стрим на базе файла с атрибутами FILE_ATTRIBUTE_TEMPORARY
or FILE_FLAG_DELETE_ON_CLOSE

А про MemoryStream забудьте как о страшном сне.


Leonid Troyanovsky   (2011-02-12 11:32:00) [2]


> Anatoly Podgoretsky ©   (12.02.11 10:16) [19]

> > я автора имел в виду, если что

> А я обеих и в первую очередь второго.

И целовался на кухне с обоими.
:)

--
Regards, LVT.


Anatoly Podgoretsky   (2011-02-12 10:16:00) [3]


> я автора имел в виду, если что

А я обеих и в первую очередь второго.


Anatoly Podgoretsky   (2011-02-12 10:15:00) [4]

> Token  (11.02.2011 21:35:12)  [12]

Ты не спросил, ты пургу несешь


Anatoly Podgoretsky   (2011-02-12 10:14:00) [5]

> Token  (11.02.2011 21:23:08)  [8]

А это где делаешь? ---- это не проясняет ситуацию


Anatoly Podgoretsky   (2011-02-12 10:13:00) [6]

> Palladin  (11.02.2011 21:19:07)  [7]

Надо - Мамой клянусь


Anatoly Podgoretsky   (2011-02-12 10:12:00) [7]

> И. Павел  (11.02.2011 21:02:04)  [4]

А ты знаешь другой варинт, когда сначала удаляется старая память :-)


Token   (2011-02-11 21:54:00) [8]

Ну на самом деле, я воспользовался случаем для прояснения ) До этого думал что под систему есть 3-ий гиг, и все 2 остальные мои. И как-то не доходило, что все "изолировано" и библиотеки надо отображать в адреса приложения.


Игорь Шевченко   (2011-02-11 21:39:00) [9]


> Я не плачусь, я спросил.


я автора имел в виду, если что


Token   (2011-02-11 21:35:00) [10]

Я не плачусь, я спросил.


Игорь Шевченко   (2011-02-11 21:31:00) [11]


> Почему?


потому что дофига. В несчастные доступные 2гб еще надо впихнуть кучу всего - системные DLL, DLL приложения, само приложение, служебные структуры, и т.д.

проще узнать, сколько доступно и исходить из этого, а не желать странного и плакаться по форумам.


Token   (2011-02-11 21:28:00) [12]

Почему?


Игорь Шевченко   (2011-02-11 21:27:00) [13]


> уже не катит


и не покатит


Token   (2011-02-11 21:23:00) [14]

str:=TMemoryStream.Create;
str.SetSize(1500000000);
----
а вот str.SetSize(1600000000); уже не катит


Palladin   (2011-02-11 21:19:00) [15]

все разговоры разговариваете, этим долго можно заниматься...
может на конкретику перейдете, станцуете или код покажете, на худой конец...
я вот взял переменную завел глобальненькую
var
 a: array of Integer;

кнопочку кинул на формочку написав в onclick
 SetLength(a, 1073741824 div 4);

и как то всем всего хватило

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


Token   (2011-02-11 21:18:00) [16]

Уточню - D7


Token   (2011-02-11 21:12:00) [17]

Именно сразу после создания, устанавливается размер порядка 1Gb. И не хотит... Хотя теоретически принципиальных ограничений я не вижу.


И. Павел   (2011-02-11 21:02:00) [18]

Не знаю, как экспандится поток, но может быть он сперва выделяет новую память, потом копирует в нее старые данные а затем удаляет старую память? Т.е. когда резервируется новая память, старая может еще не освобождаться. Такой подход, например, может приводить к нехватке памяти при SetLength очень больших массивов, когда памяти еще, казалось бы, хватает.


Token   (2011-02-11 20:08:00) [19]

А почему она возникает при выделении порядка 1Gb?


Anatoly Podgoretsky   (2011-02-11 19:11:00) [20]

> Palladin  (11.02.2011 18:27:01)  [1]

Не хватает, вот он и забыл про это.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо