Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
ja, dann muss Player aber IDisposable implementieren, denn sonst kann ich die Methode knicken
Willkommen in der wunderbaren Welt der Garbage Collection, wo jegliches Ressourcenmanagement zum Alptraum wird...
Ich wüsste ehrlich gesagt nicht wieso eine Spieler-Klasse disposable sein sollte. Das Teil sollte keine externen unmanaged Ressourcen verwalten.
Wobei man vielleicht noch erwähnen sollte: Das sieht ja nach XNA aus und da lädst du deine Texturen ja über den ContentManager. Dieser disposed schon von sich aus alle Objekte, die er geladen hat, wenn er selbst disposed wird.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »CodingCat« (20.05.2013, 00:57)
Für C# könnte ich mir einen Lösungsansatz vorstellen, der eigentlich sehr leicht für Microsoft zu implementieren scheint, aber leider nicht umgesetzt ist: Man könnte bestimmt viel machen, wenn structs einen Finalizer haben könnten. Dieser sollte sofort aufgerufen werden, wenn die Variable von Typ der Struct den Scope verlässt. Leider gibt es das nicht.
Ganz so schlimm wie du sehe ich die Situation mit unmanaged Ressourcen in .NET aber auch nicht. Solange jede Klasse, die unmanaged Ressourcen direkt hält, einen Finalizer implementiert hat man wenigstens kein Memory Leak
im Gegensatz zu einem vergessenen delete in C++. Ganz abgesehen davon, dass man in C++ nicht nur Ressourcen, sondern auch Objekte die nur Speicher benutzen, selber managen muss.
[3] Wenn die Resource etwas wie eine Datei oder Netzwerkverbindung ist, bei der mehrfacher Zugriff evtl. unterbunden wird, handelt man sich evtl. trotzdem Bugs ein.
Solange Punkt 3 nicht zutrifft, betrachte ich disposen daher mehr als Optimierung. Klassen, die IDisposable implementieren, sollten eh auch einen Finalizer implementieren.
De_Struktor
unregistriert
De_Struktor
unregistriert
Im Bezug auf BC's Aussage, der ja sagt, er würde keine Spielerklasse mit, indem Fall Texture2D, ausstatten. Dot wiederum behauptet, es ist sehr wohl disposable, was trifft nun denn zu?? Ich habe 4 Klassen, die nach Dot's Aussage, alle IDisposable implementieren müssten, aufgrund von kontrollierter Speicherentsorgung.
[...]
Was ich dazu sagen muss, scherzhafterweise, das mit so langsam die Speicherverwaltung komplexer vorkommt als die in C++. Mein Bruder, sagte, er persönlich finde das Ressourcenmanagment in C++ angenehmer, weil er vorher auch mit Java gerarbeitet hatte.
[...]
Was wäre eine logische und angemessene Implementierung??
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »CodingCat« (20.05.2013, 13:06)
De_Struktor
unregistriert
Werbeanzeige