Dynamisches Array zur mehrd. Nutzung



  • Abend.

    Ich bin heute auf ein Problem gestoßen, bei dem ich nie dachte, dass es jemals eins werden könnte. Und zwar versuche ich, dynamisch Speicher zu allokieren, um auf diesen dann wie bei einem mehrdimensionalen Array zugreifen zu können.

    Bisher kam's in meinen Programmen nur als statische Version vor, in etwa wie hier:

    int iArray[10][10];
    iArray[3][4] = 123;
    

    Nun gibt's aber bei folgender Methode beim Dereferenzieren Probleme (was ich auch nachvollziehen kann):

    int *piArray;
    piArray = (int*)malloc( 10 * 10 * sizeof( int ) );
    piArray[3][4] = 123;
    

    Die Frage ist nun: Wie löst man das elegant? Soll ich mich selbst drum kümmern, einen geeigneten Pointer auf die gewünschte Stelle im Speicher zu bekommen, indem ich Adressen zum allokierten Speicher (auf den piArray zeigt) addiere? Da interessiert mich vorallem, welche Methode einen Geschw.-Vorteil bringt.
    Oder aber sollte ich einen Pointer-To-Pointer verwenden und dann wiederrum die einzelnen Pointer auf neuen allokierten Speicher zeigen lassen? Scheint in meinen Augen etwas umständlich, aber vielleicht ist das ja Rätsels Lösung. 😉

    Edit: Zur letztgenannten Methode noch ein Beispiel, wie ich das meine:

    int **ppiArray;
    ppiArray = (int**)malloc( 10 * sizeof( int* ) );
    ppiArray[0] = (int*)malloc( 10 * sizeof( int ) );
    [...]
    

    Bin für jeden Tipp dankbar,
    Stefan



  • Habe gerade bemerkt, dass es dazu schon Lösungen in diesem Forum gibt. Sorry für den neuen Thread, am besten direkt löschen. 😕


Log in to reply