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

1

18.11.2017, 10:15

C++ Eine Frage bezüglich Zeigern

Hallo liebe Community,

ich habe bis jetzt Zeiger in meinen Programmen eigentlich nie verwendet, da sie für meine Zwecke nicht notwendig waren ( ich bevorzuge Referenzen wenn möglich ). Allerdings bewegt sich mein Spiel langsam in eine Richtung, in der ich nicht mehr alles auf dem Stack allokieren kann ( da zu groß ). Deshalb habe ich mich in den letzten Tagen viel mit dem Thema Pointer und Memory allocation auseinandergesetzt.
Nun meine Frage: wieso sollte ich nicht einfach ein einziges, großes GameObject mit new erstellen, das meinen Renderer, meine Spielwelt und alle anderen für das Spiel relevanten Objekte enthält. Dessen Member wären dann doch dank der automatic storage automatisch auf dem Heap. Da mir das zu einfach erscheint denke ich, dass ich etwas essenzielles übersehe, weiß allerdings aufgrund meiner mangelnden Erfahrnung mit dem Thema nicht was...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

18.11.2017, 10:18

Die Sache ist, dass du den Heap brauchst, solange du nicht mehr genau sagen kannst wie viele Objekte du mal haben wirst.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

18.11.2017, 11:03

Heißt das, solange ich Pools mit fester Größe verwende wäre mein Ansatz valide?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

18.11.2017, 11:06

Das geht theoretisch schon, aber schön ist das nicht. Worüber machst du dir denn Sorgen, wenn du den Heap benutzt? Wenn man Smart Pointer richtig benutzt, besteht kaum die Chance, dass man vergisst den Speicher wieder freizugeben.

5

18.11.2017, 11:15

Falls ich das richtig verstanden habe, bringen Smart Pointer Probleme mit sich, wenn man sie als Funktionsparameter übergeben will und ich in Funktionen hauptsächlich Referenzen verwende. Referenzen zu Smart Pointern sollen allerdings auch nicht verwendet werden (Dieses wissen bezieht sich auf Diskussionen aus anderen Foren und Websites, falls hiervon irgendetwas falsch ist lasse ich mich gern eines besseren belehren) und ich bis jetzt wie gesagt (bis auf das Platzproblem) auf kein Problem gestoßen bin, das ich nicht mit Referenzen lösen konnte.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

18.11.2017, 11:36

Falls ich das richtig verstanden habe
Nein, das hast du falsch verstanden.

Es gibt außerdem sehrwohl Probleme, die du mit einer Referenz nicht (sinnvoll) lösen kannst. Zum Beispiel einen optionalen Parameter.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

7

18.11.2017, 12:12

Wie gesagt, bis jetzt bin ich auf keines gestossen, deshalb frage ich gerne Leute die mehr Erfahrung in solchen Dingen haben

Das Problem bezüglich Funktionsparametern bezog sich wohl nur auf unique_ptr ( wenn ich es diesmal richtig verstanden habe ^^ , BlueCobold belehre mich eines besseren :P )

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

18.11.2017, 12:14

Du kannst auch wenn du einen unique_ptr<T> hast nur eine Referenz auf T als Parameter übergeben. Das ist überhaupt kein Problem. Eine Referenz auf den unique_ptr sollte man natürlich niemals als Parameter herumreichen, das ist schon richtig.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

9

18.11.2017, 12:46

Wow, einfach aber möglich, danke!

Gibt es heirbei Fallstricke zu beachten?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Wheee321« (18.11.2017, 13:45)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

10

18.11.2017, 18:26

Woher weißt du denn dass die Größe vom Stack nicht mehr ausreichend ist? Vielleicht ist das ja gar nicht der Fall. Oder hattest du damit schon konkrete Probleme?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige