Dynamisch erzeugte Felder

  • 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

  • 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

Jetzt mitmachen!

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