Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
NtuiCreator
#76
Blackbird schrieb:@Thilo

Funktioniert ntui_FreeEngine{} nicht richtig oder warum bleibt nach dem Aufruf von ntui_FreeEngine{*testEngine}
der Pointer *testEngine mit der Adresse gefüllt und wird nicht auf Null gesetzt ?
Weil Amiblitz3 keine Referenzübergabe unterstützt. Das müsste man recht hässlich so lösen:
[ab3]Statement ntuiFree{*enginePtr.b}
*engine.tuiEngine = Peek.l(*enginePtr)
...
Poke.l *enginePtr, Null
End Statement

...

ntui_Free{&*testEngine}[/ab3]
Das ist aber nicht mehr Typensicher und wenn man den & vergisst wird es ungemütlich.

Zitat:Deshalb reapert NtuiCreator bei der Abfrage der *testEngine im Mainloop beim Notify !
Der muss direkt nach dem Free genullt werden, ja.

Zitat:Aufgerufen wird ntui_FreeEngine{} bei creator_HideWindow{}, also sollte doch alles i.O sein beim nächsten loop Sad

Als Workaround habe ich nun die *testEngine selbst genullt, damit ist dann auch der Reaper weg Wink
Das ist kein Workaround. Auf AmigaOS in C oder Amiblitz gibt es nie Free funktionen die dir den Pointer Nullen, auch nicht FreeMem().

Für solche Sachen bräuchten wir modernere Sprachen wie C14++.
Zitieren


Nachrichten in diesem Thema

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 6 Gast/Gäste