Du kannst es mit Wächtern versuchen (oder einem Speicherbreakpoint).
Bau Dir zwei 'Sentinels' ein, und zwar so:
Delphi-Quelltext
1: 2: 3: 4:
| Var LowerSentinel : Integer = 1234; phasor_edited: PPhasor = nil; HigherSentinel : Integer = 5678; |
Wenn Du nun immer wieder Lower/HigherSentinel auf 1234/5678 überprüfst und sich daran was ändert, dann weisst Du, wo genau der Speicherbereich von phasor_edited überschrieben wird. Das kann diverse Ursachen haben, aber wenn Du wirklich ständig prüfst, ob und wo die Wächter sich verändern, bekommst Du vielleicht eine Schimmer, wo der Pointer überschrieben wird.
Du kannst natürlich auch den Pointer checken. Dazu kann man im Debugger einen Breakpoint auf den Speicherberich des Pointers setzen...
Früher habe ich die Sentinels benutzt, heute auch den Speicherbreakpoint.
Check mal