Du bist nicht angemeldet.

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

11

27.04.2008, 21:16

Also insbesondere gibt man den Speicher eines Objekts in der DLL frei, da new / delete ueberladen sein koennen. Somit wuerde beim Erstellen das new der DLL verwendet und beim Freigeben das delete des Hauptprogramms. Dieses Paerchen muss nicht zwingend zusammen passen. In einigen Tutorials auf Englisch wird darauf explizit hingewiesen.

12

27.04.2008, 21:43

HMm ... guckt mal unter Heap-Manager als Stichwort nach ... dann findet ihr was passieren kann wenn man zu wild mit Speicher rumspielt ,)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

27.04.2008, 22:09

Zitat von »"knivil"«

Also insbesondere gibt man den Speicher eines Objekts in der DLL frei, da new / delete ueberladen sein koennen. Somit wuerde beim Erstellen das new der DLL verwendet und beim Freigeben das delete des Hauptprogramms. Dieses Paerchen muss nicht zwingend zusammen passen. In einigen Tutorials auf Englisch wird darauf explizit hingewiesen.


Zum einen kann man den Operator new nicht überladen sondern maximal überschreiben (nichtmal das kann man, wenn mans genau nimtm)...
Zum anderen sind solche spezielle Allokationen in der Dokumentation zu erwähnen, genau wie die korrekte Art und Weise allokierten Speicher wieder frei zu geben. Und dann passiert da garnichts!
@D13_Dreinig

14

28.04.2008, 00:26

Die Dokumentation steht hier aber nicht zur Debatte. Es ist einfach eine Frage der sauberen Implementation. Die korrekte Art und Weise ist eine Funktion wie destroyObject in der DLL zu definieren.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

15

28.04.2008, 07:23

Zitat von »"knivil"«

Die Dokumentation steht hier aber nicht zur Debatte. Es ist einfach eine Frage der sauberen Implementation. Die korrekte Art und Weise ist eine Funktion wie destroyObject in der DLL zu definieren.


Die Freigabe dem Benutzer zu überlassen kann durchaus auch 'sauber' sein. Und natürlich steht die Dokumentation hier zur Debatte. Denn genau diese sollte, bei dem diskutierten Fall, solche Unklarheiten beseitigen.
@D13_Dreinig

16

28.04.2008, 18:02

Klar kann das auch "sauber" sein. Wenn eine Factory-Funktion zum Erzeugen angeboten wird, so ist es immer "sauber" eine zum Freigeben anzubieten. Der Unterschied besteht aber gerade zwischen auch und immer.

Die Dokumentation ist trotzdem nebensaechlich. Zum einen besteht keine Unklarheit, zum anderen existiert vielleicht gar keine Doku oder ist nur im Headerfile zu finden.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

28.04.2008, 18:15

Zitat von »"knivil"«

Klar kann das auch "sauber" sein. Wenn eine Factory-Funktion zum Erzeugen angeboten wird, so ist es immer "sauber" eine zum Freigeben anzubieten. Der Unterschied besteht aber gerade zwischen auch und immer.

Die Dokumentation ist trotzdem nebensaechlich. Zum einen besteht keine Unklarheit, zum anderen existiert vielleicht gar keine Doku oder ist nur im Headerfile zu finden.


Wie auch immer. Es gibt dafür keine Patentlösungsvorschlag, höchstens eine Richtlinie. Und falsch ist es nicht den Benutzer die Freigabe über Standardmittel freizustellen, bei diversen Abweichungen muss der Nutzer halt informiert werden.
@D13_Dreinig

Werbeanzeige