Seite 2 von 2

Re: Gültigkeit von Zeigern überprüfen

Verfasst: 24.08.2014 19:18
von edel
funker hat geschrieben:Unter 64 Bit nich? Schlecht!
Es steht dir frei, die Lib, natuerlich barrierefrei, nach 64 bit zu portieren.

Re: Gültigkeit von Zeigern überprüfen

Verfasst: 24.08.2014 19:27
von funker
Wenn ich darf gerne aba ich kann nich für ein sauberen Code garantieren... :|

Re: Gültigkeit von Zeigern überprüfen

Verfasst: 25.08.2014 07:04
von Danilo
funker hat geschrieben:
edel hat geschrieben:In den pbosl gibt es noch eine Try&Catch Lib, funktioniert unter 32 bit sehr gut.
Unter 64 Bit nich? Schlecht!
Du kannst auch das probieren/modifizieren/erweitern:
- [Windows XP+] Try .. Catch .. EndTry - Error Handling

Re: Gültigkeit von Zeigern überprüfen

Verfasst: 28.08.2014 15:32
von Thorium
Wie schon geschrieben nutzt man dafür heutzutage nurnoch Try&Catch. Das heisst man greift einfach drauf zu und hat nen Errorhandler, der im Fehlerfall ausgeführt wird.

Das nützt dir aber recht wenig. Ein Pointer wird nie einfach so ungültig, schon garnicht wenn er auf eine Prozedur zeigt. Ein gültiger Pointer muss auch nicht zwangsweise ein korrekter Pointer sein. Er kann auf eine gültige Speicheradresse zeigen, die aber garnicht die zu erwartenden Daten enthält.

Einige testen ob der Pointer 0 ist um abzufangen wenn er noch nicht initialisiert wurde. Aber auch das kann man sich in vielen Fällen sparen.

Re: Gültigkeit von Zeigern überprüfen

Verfasst: 28.08.2014 18:50
von STARGÅTE
Eine Möglichkeit die es durchaus noch gibt wäre (ähnlich wie es der Purifier macht) eine Signal-Bytefolge bei jedem erstellten Objekt/Speicher vorauszustellen.
So kannst du beim Prüfen der Gültigkeit testen, ob die geforderte Bytesequenz (4 oder 8 Byte reichen ja) in den ersten Bytes des Speichers stehen.

Ich verwende dieses Verfahren zB bei meinen Baumstrukturen, um festzustellen ob der Node des Baumes gültig ist oder "illegal" verändert wurde. So steht in den ersten 4 Byte immer eine Prüfsumme der Struktur.
Dieses Prüfung und das zusätzliche Feld kann man ja entfernen (CompilerIf) wenn der Debugger aus ist.

Re: Gültigkeit von Zeigern überprüfen

Verfasst: 28.08.2014 19:02
von hjbremer
Thorium hat geschrieben:Einige testen ob der Pointer 0 ist um abzufangen wenn er noch nicht initialisiert wurde. Aber auch das kann man sich in vielen Fällen sparen.
Aber wenn man sich das spart, muß man wissen, das nicht initialisierte Strings unter Umständen null zurückgeben.

z.B.
Define a.string
Debug @a\s

erst wenn ein String und sei es ein Leerstring, zugewiesen wurde, wird der Pointer gültig
a\s = ""
Debug @a\s