![]() |
Dynamische DLL
Wie ist das nun mit der Freigabe des Handles bei
LoadLibrary muss man das freigeben. Habe bei Assarbad gelesen dass dies auch windows erledigt. Als ich die Dll Statisch eingebunden hatte ich keine Probleme mit der dynamischen Einbindung habe ich ein EAccessViolation
Delphi-Quellcode:
;
Stream.CopyFrom(PicStream, PicStream.Size)
Problem siehe Pascal Tag und das auch nicht immer, manchmal geht es. |
AW: Dynamische DLL
Man muss nichts freigeben. Wenn der Prozess beendet wird, werden auch die von ihm belegten Ressourcen frei gegeben.
Aber meiner Meinung nach sollte man alles was man selbst anfordert auch selbst wieder freigeben. Dadurch kann man unter anderem sicher stellen das auch alles in der richtigen Reihenfolge frei gegeben wird. Und wenn dein Projekt mal in ein anderes Projekt als Objekt eingebettet wird, dann machst du dich ganz und gar nicht beliebt wenn bei Freigabe deines Projektobjektes die dazugehörigen Ressourcen weiter belegt bleiben nur weil du der Meinung warst das es doch genügt wenn diese bei Programmende automatisch frei gegeben werden. [Edit] Was dein StückQuelltext mit deiner eigentlichen DLL-Frage zu tun hat kann ich irgendwie nicht erkennen. In dem Stück Quelltext ist rein gar nichts zu sehen was auf die Arbeit mit DLLs schließen lässt. |
AW: Dynamische DLL
![]() ![]() OK, Windows gibt bei Programmende sowas frei, aber ... (TObject).Create, GetMem und Co. könnte man dann auch einfach "vergessen" freizugeben ... schließlich wird das auch mit von Windows freigegeben, wenn das Programm beendet wird. :angle: Ansonsten: Was sind denn das für Streams? (also die Klassentypen) TStream und seine Nachfahren sind ja Objekte und diese kann man nicht einfach so zwischen DLL und EXE hin-und herreichen. Aber zu diesem Thema gibt es ja schon genügend Threads, siehe ![]() |
AW: Dynamische DLL
Zitat:
Darf man annehmen, daß der Stream eine Ressource einbindet? Ansonsten müßtest du noch etwas an Details nachreichen. |
AW: Dynamische DLL
War es nicht so, dass LoadLibrary intern einen Referenzzähler inkrementiert, per FreeLibrary dekrementiert und falls der Zähler = 0, die DLL entladen wird?!
Aufjedenfall sollte man sich selber darum kümmern! Genauso wie man das bei Klasseninstanzen mit Free auch immer macht! |
AW: Dynamische DLL
Danke dachte ich mir schon das dies was
mit der Speicherverwaltung zu tun hat |
AW: Dynamische DLL
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 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