Christoph: (C / Linux) Richtig debuggen?

Beitrag lesen

Moin.

Eigentlich ist das strenggenommen falsch und hier liegt der Hund begraben. Denn "Test" ist ein String-Literal und hat eigentlich den Typ const char *, d.h. der Inhalt darf nicht modifiziert werden (const).

Prinzipiell korrekt, im Detail jedoch nicht ganz richtig: String-Literale haben Array-Typ ("hello" ist beispielsweise vom Typ char [6] - wären sie Zeiger, würde z.B. sizeof für jedes Literal identische Werte liefern.

Dass ein String-Literal nicht modifiziert werden darf, liegt nicht an seinem Typ (laut Standard ist es aus vermutlich historischen Gründen nicht const), sondern an folgendem Absatz:

It is unspecified whether these arrays are distinct provided their elements have the appropriate values. If the program attempts to modify such an array, the behavior is undefined.

Christoph