Array mit Zeiger auf Chararray



  • Hallo, ein Kollege hat folgendes Problem auf das ich spontan auch keine Lösung wußt. Entwicklungsumgebung ist das Visual Studio 6.0 und Sprache natürlich C++.
    Undzwar hat er sich einen Array angelegt dessen Elemente Zeiger auf weitere chars sind.

    Also

    char** Example = new* char[6];
    
    int i=0;
    for(i=0;i<6;i++)
    {
       Example[i] = new char[65];
       Example[i] = "";
    }
    

    Dies funktioniert soweit. Nun kann lesend zugegriffen werden, jedoch kann nicht erneut geschrieben werden auf den Speicher auf den das jeweilige Element in Example verweist. Es kommt ein AccessViolation Fehler.

    Hat jemand eine Idee woran dies liegen könnte? Oder ist es eine "Besonderheit" des Visual Studios? Oder wäre die Lösung des Problems mit einer Allokierung unter Benutzung von malloc() die Lösung?

    Grüße,
    inva

    *edit*
    Wir fanden eben heraus, dass der "String" anscheinend durch eine einmalige Zuweisung mit "=" gesperrt wird. Benutzt man jedoch strcpy() ist eine mehrmalige Zuweisung möglich. Kann mir jemand sagen was bei der Zuweisung mit "=" der Unterschied ist?





  • Danke für die flotte Antwort.
    Nur, wie kann ich den reservierten Speicher dann wieder freigeben?



  • Alles, was mit new besorgt wurde, muss mit delete wieder freigegeben werden. Wenn es sich um Arrays handelt, dürfen die eckigen Klammern hinter dem delete nicht vergessen werden.

    MfG,

    Probe-Nutzer



  • Danke für die Antwort.
    Das Problem war jedoch ein anderes, die Memory Leacks enstanden weil der Kollege die Schleife in welche allokiert wurde übersah und nur einmal außerhalb der Schleife löschte.

    Somit hats sich erledigt!

    Danke für die Antworten


Anmelden zum Antworten