Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Wie setze ich das dort hin ?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 <
020
24.04.2006, 15:34 Uhr
(un)wissender
Niveauwart



Zitat:

Bitte nicht vergessen, dass das hier ein offenes Forum ist und kein Helpdesk. Die Leute, die hier Fragen beantworten, tun das freiwillig, ohne Lohn und in der Zeit, die sie erübrigen können.



Habe ich nicht vergessen. Wie gesagt, ich wollte nur darauf hinaus, dass Anfänger sich der Problematik in keiner Weise bewusst sind und man sie deshalb darauf hinweisen sollte.
Das ganze soll nicht die Leistung von Spacelords Engagement mindern.


Bearbeitung:

Nichts desto trotz finde ich das der Code falsch ist, da ein zweimaliges Aufrufen mit der gleichen Id ein Speicherloch erzeugt. Aber das scheint Ansichtssache zu sein.


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 24.04.2006 um 15:36 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
24.04.2006, 18:42 Uhr
Spacelord
Hoffnungsloser Fall


Die meisten Leute(mich inklusive!) würden diesen Code als zweifelhaft ansehen.
Ich habe allerdings darauf hingewiesen dass mit diesem Code einiges im argen liegt.Ich hab das zwar am Beispiel des automatisch generierten (bzw. des fehlenden korrekten) Copy Konstruktor demonstriert das Gleiche gilt aber auch für andere Punkte von denen ich einige angesprochen hatte und andere halt unter "usw. usw." gefallen sind.
Einige Posts weiter vorne hatte ich auch mal kurz angesprochen dass der Einsatz geeigneter Smart Pointer sich anbieten würde.
Das sind aber imho Sachen die sich der Fragesteller erst selber erarbeiten muss.
Es bringt cmos rein garnichts wenn ich hier jetzt mit shared_ptr und Konsorten anfange,wo er doch die "normale" Zeigerthematik noch nicht wirklich verinnerlicht hat.
Und zu dem Punkt dass das nen Anfänger ohnehin nicht sieht kann ich nur sagen dass in jedem halbwegs brauchbaren C++ Buch mal die Rede von tiefen Kopien sein sollte.Und das erwähnt wird das mit new belegter Speicher wieder mit delete freigegeben werden muss ist ja wohl das allermindeste.

Ob die Klasse CFeld überhaupt irgendetwas damit zu tun haben sollte den Speicher hinter den Zeigern wieder freizugeben kann eigentlich nur derjenige beurteilen der weiß wie und wofür die Klasse später mal eingesetzt wird.
Wenn du nen neuen Zeiger an nem belegten Index speicherst und du das alte Objekt erst mit delete freigibst,wer sagt dir denn dass es nicht ausserhalb der Klasse auch noch Zeiger gibt die auf das gleiche Objekt zeigen?
Wenn du diese dann nochmal "benutzen" möchtest bist du genauso angeschissen.
Ich konnte nirgendwo nen Hinweis darauf finden dass CFeld für das löschen der Objekte zuständig ist/sein muss.
Das hat nichts mit Ansichtssache zu tun sondern mit fehlendem Hintergrundwissen über die Art und Weise wie die Klasse benutzt werden soll.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
24.04.2006, 22:26 Uhr
cmos



Jup, danke nochmal für die Hilfe hier.
Die Klasse Feld soll nur die Lebewesen und das drum herum hanhaben.
Also, neue Wesen erzeugen, diese in den Array setze, gucken welches Wesen wo steht usw. .
@Spacelord: Richtig, mit smartpointer hätte ich nix anfangen können.

Grüße,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: