Stress mit new/delete!?



  • Ach ja?

    Vertex *Vertices=new Vertex[10];
    //...
    //Aufruf von init ohne die ifs
    Vertices=new Vertex[300];
    

    das sieht mir nach einem speicherleck aus 🙄
    Oder kannst du mir sagen, wie ich die alten daten löschen soll, auf die 'Vertices' jetzt nicht mehr zeigt. Adresse raten? *g*

    Die Init Funktion soll sowohl im uninitialisierten Status Daten zuweisen können wie im Initialisierten Status.



  • Stell dich doch nicht so blöd an! Statt

    if (!Vertices) Vertices=new Vertex[VertexCount];
        else
        {
            delete[] Vertices;
            Vertices=new Vertex[VertexCount];
        }
    

    schreibst du

    delete[] Vertices;
        Vertices=new Vertex[VertexCount];
    


  • keine lust :p



  • Stell dich doch nicht so blöd an!

    Was ist denn das für ein Ton? So motiviert man nicht einmal sich selbst! 😉 😃



  • helpful schrieb:

    Was ist denn das für ein Ton?

    Nun ja, aber im Grunde hat Ringding schon Recht. 😃

    randa schrieb:

    Ne, in wirklichkeit heißt der parameter nämlich *vertices.

    Dann möchte ich dich gerne nochmal auf das gute alte Copy & Paste hinweisen. 😉

    randa schrieb:

    Und bevor ich ungarische notation verwende, stürz ich mich lieber von der brücke

    Wer hat denn hier was von ungarischer Notation erzählt?

    randa schrieb:

    Array-Klasse=Überflüssig weil ich std::vector habe. Warum zweimal machen?

    OK, für dich vielleicht überflüssig, für mich jedenfalls nicht. std::vector ist ausserdem mehr als nur eine einfache Kapselung eines builtin Arrays und mir daher zu *aufgebläht*. Weiterhin arbeitet std::vector mit dynamischem Speicher und das ist nicht immer gewollt. Warum erst Speicher reservieren, wenn ich nur ein paar Bytes brauche die ich locker auf dem Stack auslagern kann. Sicherlich kann man einen angepassten Allokator schreiben, ich hab aber noch keinen gesehen der das macht. Ausserdem hab ich keine Lust in den std Headern rumzupfuschen, wenn ich mir irgendwo Log Nachrichten einbauen will.

    randa schrieb:

    Unfähigkeit, nein. Das oben beschriebene ist mir mal rein aus versehen passiert (250 positionen über den array hinaus gelesen). Das hat zur Laufzeit null probleme gemacht.

    Schön dass es dir keine Probleme bereitet hat, ich versuche jedenfalls Programme zu schreiben die kein undefiertes Verhalten aufweisen oder *random features* besitzen.



  • Hallo,

    wenn ich mir mal eine kleine Frage erlauben duerfte:

    Warum eine Init-Funktion, wo es doch sowas schoenes wie Konstruktoren gibt?

    mfg
    v R



  • groovemaster2002 schrieb:

    Nun ja, aber im Grunde hat Ringding schon Recht. 😃

    Ja hat er. Ich habe nur vergessen, das ein delete auf null keine probleme macht. Ich habe angenommen das sei unzulässig.
    Jedenfalls schadet das if nicht und von daher ist es wurscht 🙂

    Wer hat denn hier was von ungarischer Notation erzählt?

    m_xxx dinger schauen furchtbar aus und gehören zur ungarischen notation, so wie m_iIndex oder lpddDirectDraw o.ä. Furchtbar.

    Schön dass es dir keine Probleme bereitet hat, ich versuche jedenfalls Programme zu schreiben die kein undefiertes Verhalten aufweisen oder *random features* besitzen.

    Der Kommentar ist überflüssig.
    Ich versuche das nämlich auch. Und: mir gelingt es sogar *g*

    Edit
    @virtuell Realisticer: Die Frage ist nicht erlaubt, denn die Antwort ist schon gefallen.



  • Ah, Init ist public, das uebersah ich.

    mfg
    v R



  • randa schrieb:

    Jedenfalls schadet das if nicht und von daher ist es wurscht

    und redundant

    randa schrieb:

    m_xxx dinger schauen furchtbar aus

    full ack. Ich hab dir aber auch nie geraten sowas zu benutzen. Ich hab lediglich gesagt, dass eine spezielle Namensgebung für Member durchaus sinnvoll sein kann.

    randa schrieb:

    Der Kommentar ist überflüssig.
    Ich versuche das nämlich auch. Und: mir gelingt es sogar *g*

    Da bin ich mir nicht so sicher, sonst gäbe es wohl den Thread nicht. :p

    randa schrieb:

    Leider klappt das nicht (welch überraschung 🙄 )

    Zeugt nicht gerade von einem erfolgverwöhnten Programmierstil.

    Hast du eigentlich deinen Fehler gefunden? Wenn nicht, empfehle ich dir mal deinen Debugger anzuwerfen. Bisher sind deine Fehlerinformationen jedenfalls zu wenig.



  • groovemaster2002 schrieb:

    Da bin ich mir nicht so sicher, sonst gäbe es wohl den Thread nicht. :p
    [...]
    Zeugt nicht gerade von einem erfolgverwöhnten Programmierstil.

    Doch, denn mein Software Renderer ist bald fertig :p

    Hast du eigentlich deinen Fehler gefunden?

    Jepp. Es lag tatsächlich nicht an diesem Code, sondern an der Intitalisierung der 32Bit Farbpalette.

    Danke für die Hilfe Leute.


Anmelden zum Antworten