H2244 Pointer expression needs no Initialize/Finalize - need ^ operator? (Delphi)

From RAD Studio
Jump to: navigation, search

Go Up to Error and Warning Messages (Delphi)

You have attempted to finalize a Pointer type.


program Produce;

  var
    str : String;
    pstr : PString;

begin
  str := 'Sharene';
  pstr := @str;
  Finalize(pstr);  (*note: do not attempt to use 'str' after this*)
end.

In this example the pointer, pstr, is passed to the Finalize procedure. This causes an hint since pointers do not require finalization.


program Solve;


  var
    str : String;
    pstr : PString;

begin
  str := 'Sharene';
  pstr := @str;
  Finalize(pstr^);  (*note: do not attempt to use 'str' after this*)
end.

The solution to this problem is to apply the ^ operator to the pointer which is passed to the Finalization procedure.