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

19.10.2010, 10:06

Speicher reservieren was bringt das?

Ich bin grad beim Buch "C++ für Spieleprogrammierer" bei templates. Ich habe die Speicherreservierung nich ganz verstanden, obwohl ich mir das ein paar mal durch gelesen habe. Die Anwendung ist kein Problem, ich versteh nicht was das bringt, kann mir jemand das mal ganz leicht erklären welche Möglichkeiten man mit ihnen hat. Danke schon mal.

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

2

19.10.2010, 10:10

Ich bin grad beim Buch "C++ für Spieleprogrammierer" bei templates. Ich habe die Speicherreservierung nich ganz verstanden, obwohl ich mir das ein paar mal durch gelesen habe. Die Anwendung ist kein Problem, ich versteh nicht was das bringt, kann mir jemand das mal ganz leicht erklären welche Möglichkeiten man mit ihnen hat. Danke schon mal.

Ganz einfach: Speicher wird nur solange belegt, wie er gebraucht wird.

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

3

19.10.2010, 10:17

Ich versteh deine Frage nicht so ganz. Der Titel lautet "Speicher reservieren was bringt das?", aber du schreibst "...erklären welche Möglichkeiten man mit ihnen hat.". Ihnen ist hier was? Templates?

4

19.10.2010, 10:24

@n0_0ne: Entschuldigung wenn meine Frage etwas ungenau ist. Ich wollte wissen welche Vorteile man mit ihnen hat. @MCP: Dann könnte man doch alle Daten reservieren damit wäre doch die Anwendung viel schneller wenn Speicher freigegeben wird?

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

5

19.10.2010, 10:35

lol... ich bin immer noch genau so verwirrt wie vorher ^^ du schreibst wieder "ihnen", was ist denn "ihnen"? meinst du jetzt templates? wenn ja, versteh ich auch nicht ganz was templates mit speicherreservierung zu tun haben ^^

Vielleicht erklär ich einfach mal, was es mit Templates auf sich hat: Templates sind dafür da, wenn du Code schreibst, der für mehrere Datentypen passt, du ihn aber nicht für alle Möglichen Typen überladen willst. Dann sprichst du einfach von einem abstrakten Typ, meist T (für Template) genannt und arbeitest mit dem. Die STL hat z.B. so ein template std::vector<T> (das äquivalent zum array, aber mit dynamischer größe). Du kannst da also beliebige typen drin speichern, ob es jetzt ein int ist, oder double oder ein Sprite, völlig egal.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

19.10.2010, 10:46

dann zähl ich mal ein paar vorteile von der manuellen speicherreservierung auf.
du kannst selbst entscheiden wann das objekt erstellt oder zerstört wird.
du kannst in der laufzeit bestimmen wie groß das array ist das du reservierst.
du kannst speicher objekte einer abgeleiten klasse in einem zeiger der basisklasse speichern und das objekt wie die basisklasse verwenden.
du musst auch nicht wissen wie groß die objekte sind auf die gezeigt wird(ermöglicht forwarddeklarierung bzw. das nutzen der deklarierung in den headern)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

7

19.10.2010, 10:53

Es ging eigentlich um new und delete...ich hab geschrieben das ich gerade bei teplates bin und new und delete die Vor-und Nachteile nicht verstanden habe. @NachoMan : Gibts auch Nachteile oder Stellen wo man das nicht benutzt.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

19.10.2010, 11:02

jeder aufruf von new und delete dauert recht lang und wenn du speicher reserviert hast solltest du nicht vergessen ihn wieder frei zu geben(sonst wird immer mehr speicher reserviert und dein ram ist nach ein paar minuten voll^^)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

9

19.10.2010, 11:04

Es ging eigentlich um new und delete...ich hab geschrieben das ich gerade bei teplates bin und new und delete die Vor-und Nachteile nicht verstanden habe. @NachoMan : Gibts auch Nachteile oder Stellen wo man das nicht benutzt.

Bei Funktionen, Schleifen etc.. Es lohnt sich nicht für eine Schleife die Zählvariable dynamisch zu machen. Wenn man die Anzahl und Größe von Variablen genau kennt, kann man das natürlich auch statisch bei der Programmierung festlegen. Dynamische Speicherbenutzung beutzt man in der Regel nur bei sehr großen Mengen an Speicher die gebraucht werden, oder wenn man nicht genau festlegen kann, wieviel man zur Laufzeit braucht.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

10

19.10.2010, 11:07

kurz gesagt. man nutzt es nur wenn man einen vorteile benötigt. das wirst du von ganz allein machen weil das reservieren und freigeben ja auch getippt werden muss ;)

also merken: die faulheit ist die größte tugend des programmierers.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige