kein Dispose für Image bei einem c++ Projekt?

Reticent

Erfahrenes Mitglied
Hallo,

ich bin gerade auf ein Problem gestoßen. In meiner c#-Anwendung benutze ich
Code:
this.pictureBox1.Image.Dispose();
um die Resourcen freigeben. Jetzt soll ich diese Anwendung in c++ umwandeln. (natürlich "->" statt ".")
99,9% sind schon fertig, bloß der Compiler sagt, dass dieses Dispose() nicht vorhanden ist. Ich kann die Funktion sehen, aber sieht wie private aus.

Weiß einer wie ich in dem Fall die Resourcen freigeben kann?

Danke für jede Hilfe!
 
Das ist nicht richtig. Zumindest wenn wir nur bei C# bleiben. Dispose wird verwendet, um Ressourcen aufzuräumen. Wird das Objekt nur null gesetzt, passiert das nicht. D.h. dass eventuell bestimmte Ressourcen nicht freigegeben werden (Filezugriffe etc.)

Wenn es kein Dispose gibt, dann kannst eben auch keines aufrufen.
 
Danke, ich habe jetzt mit pictureBox1->Image = nullptr; und es funktioniert soweit. Blos weiß ich jetzt nichct ob etwas im speicher jedes mal bleibt.

Kann man irgendwie prüfen ob sich im speicher noch etwas befindet.
 
Norbert Eder hat gesagt.:
Das ist nicht richtig. Zumindest wenn wir nur bei C# bleiben. Dispose wird verwendet, um Ressourcen aufzuräumen. Wird das Objekt nur null gesetzt, passiert das nicht. D.h. dass eventuell bestimmte Ressourcen nicht freigegeben werden (Filezugriffe etc.)

Wenn es kein Dispose gibt, dann kannst eben auch keines aufrufen.

Glaube du warst doch derjenige der sagte : "Wenn ein Objekt = null gesetzt wird, wird der GC es beim nächsten Mal aus dem Speicher entfernen" oder nicht ?

Also wenn ja, dann ist das doch genau was er wollte, ok, es ist nicht sofort, aber ich denke das macht keinen Unterschied, weil sofern der Speicher benötigt wird kommt der GC ja sowieso zum Einsatz...


Gruß

MFC OpenGL
 
Ja, das hab ich gesagt, ABER ich hab in diesem Text auch noch einiges mehr dazugeschrieben. Du kannst dies aber gerne hier nachlesen. Interessant ist der Punkt mit dem Dispose-Pattern.

 
Zurück