Schreibzugriff auf Array nicht möglich



  • int main()
    {
        char* string = "Anna";
        string[0]='a';
    
        return 0;
    }
    

    Ganz kurz und knapp:
    Warum geht das nicht?

    Bekomme keine Warnings, einfach nur eine Absturzmeldung von Windows.
    Benutze GNU GCC Compiler wenn es etwas damit zu tun hat.

    Mit freundlichen Grüßen,
    Thez

    €dit: char string[] = 'Anna'; behebt den Fehler. Warum?



  • Schalte mal die Warnung an. Du hast einen Zeiger auf einen c-string, der wahrscheinlich in einem r/o-Speicherbereich liegt. Greifst du dann schreibend drauf zu, gibts halt ein Problem...
    Du kannst das Problem lösen, indem du den String in einen schreibbaren Bereich kopierst, z.B.

    char str[] = "abcdef"; //Weist den Compiler an, ein Array[7] anzulegen mit dem String als Inhalt
    str[0] = 's';
    


  • D.h. wenn ich sowas mache wie char* string = "Bla",
    dann gibt es keine implizite Speicherallokierung?



  • char* string = "Anna";

    ist ein const char* string = "Anna"; nach C11 Standard

    D.h. wenn ich sowas mache wie char* string = "Bla",
    dann gibt es keine implizite Speicherallokierung?

    nein - nie



  • Alles klar, danke! War mein erstes mal mit C-Strings 😃


Log in to reply