AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Auf legalen zugriff prüfen vor AV oder SegFault
Thema durchsuchen
Ansicht
Themen-Optionen

Auf legalen zugriff prüfen vor AV oder SegFault

Ein Thema von QuickAndDirty · begonnen am 7. Okt 2019 · letzter Beitrag vom 11. Okt 2019
 
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
724 Beiträge
 
Delphi 12 Athens
 
#3

AW: Auf legalen zugriff prüfen vor AV oder SegFault

  Alt 7. Okt 2019, 13:09
Hallo,
wenn man Fehler macht kann es ja vorkommen, dass auch ein Zugriff über eine Objektvariable die "Assigned" ist zu einer Zugriffsverletzung führt.

Da es "jemanden" gibt der diese Exception wirft müsste es doch auch möglich sein darauf zu prüfen bevor die zugriffsverletzung passiert, oder?
Delphi-Quellcode:
If islegal(Myobject.free) then
Begin

end;
Oder?
Ganz so einfach ist die Sache nicht, die Exception kommt irgendwo aus den Tiefen der virtuellen Speicherverwaltung des Betriebssystems, und es kommt nicht nur auf die Adresse selbst an, sondern auch darauf, was man damit anstellt (lesen, schreiben, ausführen), und wohin der Pointer zeigt (stack, Delphi memory manager heap, OS memory). Es gibt zwar OS-Funktionen wie IsBadReadPtr, IsBadWritePtr, IsBadCodePtr, VirtualQueryEx, aber die sind nur begrenzt nützlich. Selbst wenn MyObject eine legal aussehende Adresse enthält (z. B. aus einem Block des MMs) muß sie ja nicht auf eine Objekt der erwarteten Klasse zeigen, und selbst wenn sie das tut ist nicht gesagt, dass der Inhalt des Objektes noch in Ordnung ist. Im Allgemeinen ist dies eine Aufgabe aus der Klasse "Fool's errant", es ist pure Zeitverschwendung da schlicht nicht final lösbar. Halt lieber Disziplin, setz konsequent FreeAndNil für Objektvariablen ein, die außerhalb des lokalen Scopes sichtbar sind, oder verwende lifetime management über Interfaces anstelle von Objektreferenzen.
Peter Below
  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 09:30 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-2025 by Thomas Breitkreuz