Frage zum Löschen dynamisch angelegter Arrays



  • Hallo,
    ich muss hier für die uni eine Aufgabe erledigen, bei der eindimensionale "vector" arrays und 2-dim "Matrix" arrays erstellt und wieder gelöscht werden sollen.
    Dabei sind die jeweiligen Funktionsköpfe angegeben.
    So sieht die Funktion zum erstellen der vektoren so aus:

    double * createvector(int n) //vorgegeben
    {
       return new double[n]; //selbst geschrieben
    }
    

    Die Funktionen für das Löschen des vectors ist so vorgegeben:

    void freevector(double *b, int n) //vorgegeben
    {
        delete [] b;
    }
    

    Wieso wird da der Parameter n übergeben? Übersehe ich hier etwas, oder ist das einfach ein Fehler??



  • Das ist nicht nötig. Die Information wie viele Elemente erstellt wurden werden bereits (implizit vom new[] Operator) gespeichert.



  • Dein Name stimmt, die Übung ist irgendwie C-Style...



  • Ich habe jetzt nicht so viel Erfahrung mit den Uni-C++ Lehrmethoden. Das Problem ist, dass dort nocht nicht mal ein C/C++ mix gelehrt wird, sondern einfach schlechter Programmirstil.
    Ich mein, die verlieren kein Wort über die STL. Sowas wie "int n" im Parameter würde ich zumindest "unsigned" deklarieren. Dann wird nie const verwendet, sowas wie "freevector" gehört meiner Meinung nach in den Destruktor von ner Klasse...
    Ist/war das bei euch auch so? Oder kann ich mir noch Hoffnung machen? :>



  • Jo, das war bei uns auch so. Ohne es jetzt verteidigen zu wollen, aber ich denke, das rührt daher, dass (auch wenn es C++-Vorlesung heißt) es in der Regel wohl eher um programmiertechnische/algorithmische Grundlagen geht und C++ hier nur beispielhaft als Mittel zum Zweck verwendet wird. Es ist häufig kein Kurs, der in die tiefen von C++ als konkrete Programmiersprache mit all ihren Features und Good Practices etc. einsteigt.


Anmelden zum Antworten