speicher dynamisch anfordern Problem!!



  • Ich möchte den Speicher für ein 2d array dynamisch anfordern, warum funzt das nicht?

    int *ptr_poly;
    	ptr_poly=new int[500][ecken];
    

    Geht das generell nur bei 1d arrays?



  • du kannst das auch anders schreiben. das müsste auch klappen:

    int *ptr_poly;
    ptr_poly = new int[500 * Ecken]
    

    und zugreifen tust du dann so:

    ptr_poly[y * 500 + x];
    //y gibt die spalte an
    //x gibt die reihe an
    


  • Weil nur new[] und nicht new[][] überladen ist.
    Letzteres geht übrigens auch garnicht. 😉
    Es funktioniert so:

    int** ppN;
    ppN = new int*[500];
    for(int n = 0; n < 500; ++n)
       ppN[n] = new int[ecken];
    
    // Am Ende:
    
    for(n = 0; n < 500; ++n)
       delete ppN[n];
    delete[] ppN;
    

    Mit dem Ende ist das nicht ganz korrekt, glaube ich. Musste ausprobieren.

    EDIT:
    gibbets Lösung ist natürlich besser, wenn die Daten direkt linear liegen, erspart einem das einiges:
    Die häufigen Doppelschleifen, komplexere Arithmetik (ok, so komplex ist sie ja dann auch nicht), etc.

    EDIT2:
    @gibbets:
    Hm, gibt nicht eher x die Spalte an?

    Mfg MAV



  • in unser faq gibts dazu ein beitrag mit intersanten alternativen http://www.c-plusplus.net/forum/viewforum.php?f=25


Anmelden zum Antworten