Löschen eines multidimensinal arrays.

NetzUnity und Informatik-forum wurden zusammengelegt. Eine entsprechende Ankündigung wird demnächst noch folgen. Für 2025 ist hier einiges geplant! Bei Fragen bitte per DM an Maximilian Rupp wenden.
  • Hallo,

    Die IDE ist Microsoft Visual C++ 2010 Express.

    Ich habe eine Klasse, welche über ein 2 dimensionales array verfügt:

    double matrix_ [COLOM] [ROW];

    Wenn ich versuche das array zu löschen bekomme ich jedoch immer wieder Laufzeitfehler. COLOM und ROW sind immer 2 btw.

    Versuch 1:
    delete (double *) matrix_[0];
    delete (double *) matrix_[1];
    delete matrix_;

    Versuch 2:
    delete [] matrix_[0]; // Wirft compiler Warning warning C4154: Löschen eines Arrayausdrucks; Konvertierung in Zeiger
    // warning C4156: Löschen eines Arrayausdrucks ohne Verwendung der Arrayform von 'delete'. Arrayform wird automatisch verwendet.
    delete [] matrix_[1];
    delete matrix_;

    Versuch 3:
    delete (double *) [] matrix_[0];
    delete (double *) [] matrix_[1];
    delete matrix_;

    So einen Runtimefehler bekomme ich:

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Ich habe auch die Zeile "delete matrix_;" weggelassen und die verschiedenen Methoden probiert. Versuch 2 sollte laut diversen Foren eignelich funktionieren.

    Anbei die Klasse:

    Vielen Dank für jede Hilfe im Vorhinein.

    “For God's sake, give me the young man who has brains enough to make a fool of himself”, Robert Louis Stevenson

    Einmal editiert, zuletzt von baracuda (24. September 2011 um 14:56)

  • Du brauchst das Array nicht extra mit delete löschen. Du hast sie ja auch nie mit new auf dem Heap angelegt.
    Oder anders gesagt: Der Speicher für das Array wird direkt in der Matrix reserviert und mit dem Löschen der Matrix frei gegeben. Und wenn du immer nur eine 2x2 Matrix brauchst, dann ist das wohl auch so die beste Lösung.
    Lösche also ganz einfach den Destruktor[edit].

    2 Mal editiert, zuletzt von Ramses13 (24. September 2011 um 15:13)

  • Prinzipiell gilt: Delete everything you new.

    z.B.:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!