1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Dynamisch erzeugte Felder

    • Frage
  • markus
  • 24. März 2004 um 21:25
  • Unerledigt
  • markus
    5
    markus
    Mitglied
    Punkte
    225
    Beiträge
    31
    • 24. März 2004 um 21:25
    • #1

    Hallo!

    Ich steh vor folgendem Problem. Ich hab ein 2dimensionales Feld folgendermassen angelegt:

    float** S = new float*[W/bin];
    for(i=0; i<W/bin; i++)
    S[i] = new float[W/bin];

    Das klappt. Aber wenn ich den Speicherplatz wieder freigebe, bekomme ich beim Ausführen des Programmes eine Fehlermeldung.

    DAMAGE: after normal block (#..) at 0x........

    Freigeben tu ich den Speicherplatz folgendermassen:

    for(i=0; i<W/bin; i++)
    delete[] S[i];
    delete[] S;

    Leider bin ich mit meinem Latein nun am Ende. Was muß ich ändern damit dieser Fehler nicht auftritt?

    Danke
    lg Markus

  • MichiK
    9
    MichiK
    Mitglied
    Reaktionen
    1
    Punkte
    786
    Beiträge
    153
    • 24. März 2004 um 21:43
    • #2

    liegt eher dran, daß du im zuge des programm-ablaufs irgendwo über das ende dieser speicherbereiche hinausgeschrieben hast

    Informatik @ TU Wien (1998 - 2005)

  • markus
    5
    markus
    Mitglied
    Punkte
    225
    Beiträge
    31
    • 25. März 2004 um 16:08
    • #3

    danke für deinen hinweis, du hattest recht.

    hab W/bin in int (ceiling(W/bin) geändert.
    jetzt gehts

    ich hab das feld jetzt um eine 3te dimension erweitert...:
    double*** S = new double**[int (var)];
    for(i=0; i<int (W/bin); i++)
    {
    S[i] = new double*[int (ceil(W/bin))];
    for(j=0; j<int (W/bin); j++)
    S[i][j] = new double[int (ceil(W/bin))];
    }

    hab ich so den speicherplatz richtig freigegeben?


    for(i=0; i<int (W/bin); i++)
    {
    for(j=0; j<int (W/bin); j++)
    delete [] S[i][j];
    }
    delete [] S;


    danke
    markus

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung