Segmentation fault



  • Hi,

    ich mache gerade meine ersten Schritte in C++ und habe mir dafür ein Buch gekauft.

    Wenn ich nun folgendes Beispiel in meinem Dev-Cpp Compiler ausführen möchte, stürzt immer das Programm ab und es kommt die Meldung: "Eine Zugriffsverletzung (Segmentation fault) trat in Ihrem Programm auf."
    Er compiliert es allerdings ohne Probleme.

    #include<ctype.h>
    #include<iostream.h>
    
    int *pS;
    
    void upperCase(char *pS)
    {
         while (*pS)
         {
                   if (islower(*pS))
                   {
                    *pS = toupper(*pS);  //Zugriffsverletzung
                   }
    
                   pS++;
         }
    }
    
    void fn()
    {
         char *pString= "Test";
         cout << pString << endl;
    
         upperCase(pString);
         cout << pString << endl;
    
    }
    
    int main()
    {
              cout << "Los! " << endl << endl;
              fn();
              while(1);
              return 0;
    }
    

    Weiß jemand woran das liegen kann?
    Muss ich vielleicht noch Speicher freigeben oder so etwas?

    Vielen Dank im Voraus

    MfG
    Stephan01



  • Du darfst keine String Literals verändern, der Fehler ist dass es

    const char *pString= "Test";

    heißt. Du brauchst sowas:

    char pString[] = "Test";



  • Hey Wahnsinn es hat funktioniert!

    Nur, kann mir das mit den String Literals jemand erklären?
    Und warum steht es in dem Buch dann falsch?

    MfG
    Stephan01


Anmelden zum Antworten