> -- GameHunter писал(а):
> В программе (см. attachment) ARRAY OF ARRAY OF LONGREAL размещаетсяв куче несколько раз. Это приводит к утечке памяти. Размер массива довольно большой.Добавил вывод значения factor и запустил со значениями 27..30:## Код:
```
D:\AlexIljin\XdsMemLeakBug>Example.exe

factor =  27
 156396648
 312711376
 312711376
 469026104
 469026104
 469026104
 469026104
 469026104
 469026104
 469026104

D:\AlexIljin\XdsMemLeakBug>Example.exe

factor =  28
 168187040
 336292160
 336292160
 504397280
 504397280
 672502400
 504397280
 672502400
 504397280
 672502400

D:\AlexIljin\XdsMemLeakBug>Example.exe

factor =  29
 180406072
 360730224
 360730224
 541054376
 360730224
 541054376
 360730224
 541054376
 360730224
 541054376

D:\AlexIljin\XdsMemLeakBug>Example.exe

factor =  30
 193053744
 386025568
 386025568
 578997392

#RTS: unhandled exception #18: out of heap space

File errinfo.$$$ created.
```
Судя по всему, из-за большого объёма блока просто-напросто накапливается фрагментация кучи.

На значении 13 видно, как система постепенно идёт вразнос:## Код:
```
factor =  13
 36338360
 36338360
 72594800
 72594800
 108851240
 108851240
 145107680
 145107680
 145107680
 145107680
```
А вот, скажем, на 27 (см. выше) вполне неплохо работает.

Так что, это не утечка, а фрагментация. Выделяйте блоки меньшего размера.

Например, можно изменить определение типа Field на вот такое:## Код:
```
TYPE
  Row = POINTER TO ARRAY OF LONGREAL;
  Field = POINTER TO ARRAY OF Row;
```
В этом случае код работает медленнее, но, скажем, при factor = 27 максимум потребляемой памяти гораздо ниже:## Код:
```
БЫЛО
factor =  27
 156396648
 312711376
 312711376
 469026104
 469026104
 469026104
 469026104
 469026104
 469026104
 469026104

СТАЛО
factor =  27
 156875712
 157114288
 157089600
 157130672
 157130672
 157147056
 157147056
 157163440
 157163440
 157179824
```
Да и при factor = 50 всё прекрасно работает:## Код:
```
factor =  50
 536906872
 537350616
 537425560
 537503992
 537487608
 537520376
 537549656
 537491096
 537520376
 537553144
```
Вложение:XdsMemFragmFixed.zip[1.79 КБ]
Скачиваний: 407
