Einzelnen Beitrag anzeigen

Trafel21

Registriert seit: 16. Nov 2018
69 Beiträge
 
#7

AW: Ungültige Zeigeroperation

  Alt 15. Mai 2019, 13:01
Danke für die Antworten.

Wieso eigentlich inherited, es handelt sich ja nicht um einen Destruktor?
In diesem Fall ist das wirklich obsolet, da die Klasse direkt von TDataModule abgeleitet wurde. Kommt allerdings Formvererbung ins Spiel, werden in einem Eventhandler bei inherited auch die in der DFM des Vorfahren verdrahteten Handler aufgerufen. Das ist zwar was völlig anderes als virtual/override, benutzt aber dasselbe Keyword.
Ich hab es entfernt. Danke für den Hinweis.

Delphi-Quellcode:
TCallInstanceDictionary = class(TObjectDictionary<TCallID,TCallInstance>)
end;
TCallInstanceDictionary = class(TObjectDictionary<TCallID,TCallInstance>)
end;
..ist das ein Copy/Paste Fehler?

Ownerships:
http://docwiki.embarcadero.com/Libra...tionary.Create

Das erkärt noch nicht den Fehler. Das müßte MemoryLeaks erzeugen.
Ja, war ein Copy/Paste Fehler.

Ich bin noch einmal mit dem Debugger und F8 weiter rein.

Code:
//System.Classes

procedure TComponent.DestroyComponents;
var
  Instance: TComponent;
begin
  FreeAndNil(FSortedComponents);
  while FComponents <> nil do
  begin
    Instance := FComponents.Last;
    if (csFreeNotification in Instance.FComponentState)
      or (FComponentState * [csDesigning, csInline] = [csDesigning, csInline]) then
      RemoveComponent(Instance)
    else
      Remove(Instance);
    Instance.DisposeOf; //////// Hier wird der Fehler ausgelöst
  end;
end;

//SYSTEM.pas

procedure TObject.FreeInstance;
begin
  CleanupInstance;
  _FreeMem(Pointer(Self)); //////// hier wird angehalten, wenn ich die Option beim ausgelösten Fehler wähle
end;
  Mit Zitat antworten Zitat