AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zugriffsverletzung nach Objektzerstörung innerhalb Thread
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung nach Objektzerstörung innerhalb Thread

Ein Thema von Pfoto · begonnen am 30. Nov 2006 · letzter Beitrag vom 1. Dez 2006
 
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

Zugriffsverletzung nach Objektzerstörung innerhalb Thread

  Alt 30. Nov 2006, 18:10
Ok, nachdem ich schon seit längerem an einem wiederkehrenden Fehler hänge, folgende Situation:

1) Ich übergebe einem Thread eine Objektliste
2) Thread holt sich erstes Objekt aus der Liste und tut etwas damit
3) Objekt wird mittels .free anschließend gelöscht
4) Der Thread wird beendet und die Anwendung läuft ohne Probleme weiter
5) Beim Schließen der Anwendung kommt der Crash (Zugriffsverletzung bei Adresse 00000000)

Arbeite ich dieselbe Objektliste ohne Thread durch, entsteht kein Fehler.
Es entseht ebenfalls keine Fehlermeldung, wenn ich dieses Objekt nicht zerstöre - aber es hängt ja noch im Speicher...

Die Objektliste habe ich so erstellt, dass sie nicht selbst die Objekte freigeben soll,
wenn die Liste geleert wird.


Gibt es grundsätzlich Beschränkungen, wenn man ein Objekt innerhalb eines Threads löschen will?
Wahrscheinlich doch nur, hinsichtlich Mehrfachzugriff, oder?

Zugriffsverletzung bei Adresse 00000000 heißt doch, dass ein Objektzeiger bereits auf NIL steht und ich trotzdem darauf zugreifen möchte, oder?


Vielleicht habt ihr ja noch Gedanken dazu, die ihr loswerden wollt,


Folgende Anmerkunge möchte ich noch machen:

Es sind Objekte, die von TObject abgeleitet sind.

Die Objekte, die ich freigeben will, sind wiederum abgeleitet.
Freigegeben wird mit Hilfe des Ursprungsobjektes, also so:
Delphi-Quellcode:
Type
  TElternObjekt = class
  end;
  
  TKindObjekt = class(TElternObjekt)
  end;

 
KindObjekt:= TKindObjekt.Create;

{ ... tue was damit ... }

{ Jetzt freigeben über TElternobjekt }

TElternObjekt(KindObjekt).free;
Aber wenn das nicht gültig wäre, wieso funktioniert es dann ohne Thread-Umgebung?

Dank und Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz