Fastmm с новым и утилизировать Delphi 6 - PullRequest
0 голосов
/ 05 октября 2011

У меня есть некоторый код Delphi 6, который выделяет память с помощью New и освобождает ее с помощью Dispose. Я прошел по коду и вижу, что и New, и Dispose действительно вызывают.

Мне интересно, почему FastMM сообщает об утечке памяти, хотя Dispose вызывается. Может ли это быть связано с тем, что размещаемый предмет находится в разделе var?

type TRunP = record
  channels      : Word;     (* channels for program       *)
  GCharH        : Word;        (* Character Height        *)
  GCharW        : Word;        (* Character Width         *)
... [snip]
end;
...
PRunPBuf = ^TRunP; //record pointer
...

var
  ptrRunPBuf: PRunPBuf;

...
New(ptrRunPBuf);   //here is the problem, FASTMM claims this was never disposed, but dispose was called without error.  
...
Dispose(ptrRunPBuf);   

Вот информация от FastMM.

--------------------------------2011/10/4 16:29:08--------------------------------
A memory block has been leaked. The size is: 276

This block was allocated by thread 0x1BBC, and the stack trace (return addresses) at the time was:
40002FCF [System][@GetMem]
6243EB [dir\mfs1.pas][MFshell1][TfrmM.FormCreate][1806]
400EDDA7 [Forms][TCustomForm.DoCreate]
400EDA1A [Forms][TCustomForm]
7E428EAB [Unknown function at DefWindowProcW]
7C90D98A [ZwQueryVirtualMemory]
7C80BA5D [VirtualQueryEx]
7C80BA86 [VirtualQuery]
1148FD9 [GetFrameBasedStackTrace]
114901C [GetFrameBasedStackTrace]
1149336 [GetRawStackTrace]

The block is currently used for an object of class: Unknown

The allocation number is: 62982

Current memory dump of 256 bytes starting at pointer address 7FF40410:
44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00
44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00
44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00
44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00
44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00
44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00
44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00
44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00 44 99 63 00
D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .
D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .
D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .
D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .
D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .
D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .
D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .
D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .  D  ™  c  .

--------------------------------2011/10/4 16:29:08--------------------------------
...