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