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

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

Резкое увеличение размера динамического массива [D6, WinXP]


Страницы:   1 2 3

vint45 ©   (2007-10-11 16:25:00) 

Здраствуйте!

Есть динамический массив, в который помещаются записи (record) с описанием файлов при сканировании диска. Записи такого вида:
 TFile = record
  Folder: string;
  FullName: string;
  Size: int64;
 end;


При сканировании всего диска создается довольно большой массив, около 60000 элементов. При этом программа вылетает с ошибкой "Out of memory".
Диспетчер задач показывает, что программа съела около 250 метров. Хотя если подсчитать сколько должен занимать массив (подсчетом длины строк помещаемых в массив + указатели), то получится примерно метров 5.
Замена типа string (AnsiString) на PChar для FullName решает проблемму (диспетчер показывает, что приложение съедает мах 3 метра). Но вопрос остается, почему при работе с AnsiString приложение выделяет так непропорционально память.
Может так диспетчер памяти выделяет блоки с резервироваем пространства, или может я все-таки что-то не так делаю (тогда могу привести весь код)?


Суслик   (2007-10-11 16:30:00) [41]

вроде все ок, не должно быть такой ошибки.
где-то еще ошибка, или строке несусветной длины.


clickmaker   (2007-10-11 16:26:00) [42]

а как выделяешь память и как записываешь строки?


Страницы:   1 2 3

Наверх

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