Dynamisches Array initialisieren



  • Hi Folks!

    Ich bin gerade dabei mir ein dynamisches 2D-Array zu erstellen:

    int iRasterX1  = 10;
    int iRasterX2  = 20;
    float **faVal;
    
    // 2D Array erzeugen
    faVal = new float*[iRasterX1];
    
    for (int i=0; i<iRasterX1; i++)
    {
        faVal[i] = new float[iRasterX2];
    }
    
    ...
    
    // 2D Array zerstören
    for (int i=0; i<iRasterX1; i++)
    {
        delete []faVal[i];
    }
    
    delete []faVal;
    

    So, schön und gut. Ich wollte jetzt das Array möglichst elegant mit 0 vorinitialisieren. Dabei kam mir das gute alte memset in den Sinn, aber irgendwie steh ich auf dem Schlauch 😕 :

    memset(faVal, 0, sizeof(faVal)*iRasterX1*iRasterX2);
    

    Das setzt mir ja alle Pointer im Array auf 0, bloß nicht die Werte. Wie muß ich das richtig machen?

    MfG F98.



  • Bei floats würd ich nicht memset benutzen..



  • wenn du es so machst, kannst du nicht das ganze array auf einmal memsetten (abgesehen davon, was der schlaue gesagt hat! Bei Objekten schließlich ist das Ganze ausgemachter Schwachsinn). Du musst für jeden Zeiger ein eigenes Memset machen (also in einer Schleife). Aber du kannst ein 2d-Array auch in einem 1d-Array unterbringen. DIe Größe eines solche Arrays ist l*b, eine bestimmte Position steuert man mit *(ptr + x + b*y) an.
    geloescht



  • Ok. Danke erstmal.


Anmelden zum Antworten