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

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

11

19.10.2010, 11:13

Also von new und delete hattest du nirgends was gesagt ^^

Aber wie dem auch sei... Größter Nachteil ist auf jedem fall, dass es keinen Garbagecollector wie in Java z.B. gibt. D.h. wenn du speicher mit new anforderst (new ruft übrigens auch den constructor auf), dann ist der solange belegt, bis du delete darauf anwendest. Wenn du das nicht machst, und sowas vielleicht auch noch in einer Schleife, kommt es zu sog. speicherlecks. Sobald dein RAM vollständig belegt ist, wird dann auf die festplatte ausgewichen und damit ist dein programm im prinzip nicht mehr lauffähig.

Ein anderer Nachteil ist natürlich die zusätzliche Indirektion, d.h. du gehst einen Umweg über den Pointer (mit dem dereferenzierungsoperator * oder ->), was das ganze in spezialfällen auch langsamer machen kann.

Normalerweise sollte man die pointer aber nur für zusammengesetzte datentypen benutzen (z.B. structs oder klassen, auch arrays, da arbeitest du schon immer mit pointern, ohne, dass du es gemerkt hast ^^). Das bedeutet ein "new int;" ergibt nicht wirklich viel sinn und wird auch normalerweise nicht benutzt.

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

12

19.10.2010, 12:13

Normalerweise sollte man die pointer aber nur für zusammengesetzte datentypen benutzen (z.B. structs oder klassen, auch arrays, da arbeitest du schon immer mit pointern, ohne, dass du es gemerkt hast ^^). Das bedeutet ein "new int;" ergibt nicht wirklich viel sinn und wird auch normalerweise nicht benutzt.

Um, sorry, aber Pointer machen auch bei primitiven Datentypen Sinn. Nur macht es dort keinen Sinn den Speicher dynamisch anzufordern. Es ist schon ein Unterschied ob der Pointer auf den Stack, oder den Heap zeigt. Bei Rückgabewerten von Funktionen über die Funktionsparameter und Pointer zum Beispiel macht es viel Sinn, Pointer einzusetzen.

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

13

19.10.2010, 12:31

OK, das war vielleicht etwas undeutlich geschrieben. mit "die pointer" hab ich in dem fall nur die gemeint, die man mit "new" bekommt ^^

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

14

19.10.2010, 12:40

OK, das war vielleicht etwas undeutlich geschrieben. mit "die pointer" hab ich in dem fall nur die gemeint, die man mit "new" bekommt ^^

Hab ich mir schon gedacht, aber ich dachte mir, ich meckere mal, damit der Threadersteller das nicht falsch auffasst. ^^

Werbeanzeige