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
TigerClaw25
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 |
CSpieler *pSpielerliste = NULL; int AnzahlSpieler = 0; cout << "Wie viele Sppieler: " ; cin >> AnzahlSpieler; // Speicher auf dem Heap für CSpieler reservieren. pSpielerliste = new CSpieler[AnzahlSpieler]; |
Administrator
TigerClaw25
unregistriert
C-/C++-Quelltext |
|
1 |
pSpielerliste[i].foo(); |
C-/C++-Quelltext |
|
1 |
*(pSpielerliste+i).foo(); |
Administrator
Zitat
The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2)))
TigerClaw25
unregistriert
C-/C++-Quelltext |
|
1 2 |
CKlasse *pSpielerliste=NULL; pSpielerliste = new CKlasse[Anzahl] |
C-/C++-Quelltext |
|
1 2 |
const int Anzahl = 5; CKlasse Spielerliste[Anzahl]; |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »TigerClaw25« (06.07.2017, 15:52)
Administrator
Ist der Grund der, dass die Anzahl im zweiten Beispiel "const" sein muss, und im ersten Beispiel ich sozusagen selbst den Wert während der Laufzeit bestimmen kann?
Das die lokalen variablen ihre Gültigkeit verlieren, ist für mich kein Argument. Das tun die Zeigervariablen auch, wenn ich die Adresse nicht anders auffange.
Also worin liegt genau der Sinn der "dynamischen Speicherverwaltung"? Ok, ich habe mit new einen Typ und eine Größe. Bennenen muss ich das Objekt nicht. Das ist für mich aber noch nicht dynamisch.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Na ja, nein. Der Zeiger mag seine Gültigkeit verlieren, aber die im Heap angelegte Variable lebt weiterhin und bewirkt irgendwas, was niemand anders überwachen müsste und daher auch niemand mehr den Pointer dahin bräuchte (wozu auch immer sowas gut sein könnte, man weiß ja nie). Eine Variable im Stack wird zerstört und ruft den Destruktor, wenn der Block verlassen wird. Das ist ein riesiger Unterschied. Sogar noch schlimmer, während sie im Stack weggeräumt wird, bleibt sie im Heap auch dann am Leben, wenn du das vielleicht gar nicht wolltest. So enstehen dann Memory-Leaks.Das die lokalen variablen ihre Gültigkeit verlieren, ist für mich kein Argument. Das tun die Zeigervariablen auch, wenn ich die Adresse nicht anders auffange.
Hast du für mich einen sinnvollen Tipp bezüglich Bücher?
Werbeanzeige