Einzelnen Beitrag anzeigen

USchuster

Registriert seit: 12. Sep 2010
Ort: L.E.
120 Beiträge
 
Delphi XE3 Professional
 
#6

AW: Dispose mit untypisiertem Pointer

  Alt 14. Sep 2012, 00:27
Für Records mit Managed Types wie (Long)Strings wird zwingend ein typisierter Pointer(cast) benötigt, denn sonst gibt es Speicherlöscher außer es gibt einen zusätzlichen Finalize Aufruf.

Delphi-Quellcode:
program RecordMemleak;

{$APPTYPE CONSOLE}

type
  PRecord = ^TRecord;
  TRecord = record
    Value: string;
  end;

var
  TypedPointer: PRecord;
  UntypedPointer: Pointer;
begin
  ReportMemoryLeaksOnShutdown := True;
  New(TypedPointer);
  TypedPointer^.Value := 'Foo';
  UntypedPointer := TypedPointer;
  Dispose(UntypedPointer);
end.
  Mit Zitat antworten Zitat