Anfängerfrage zu char *



  • Hallo,

    ich habe eine Verständnisfrage. Angenommen, ich definiere eine Variable und initialisiere sie mit einem literalen String, etwa so:

    char *text = "hallo";
    

    Anschließend will ich dieselbe Variable benutzen, um den String aus einer anderen Variablen hineinzukopieren. Dabei soll text natürlich nicht mehr auf die literale Konstante "hallo" zeigen, sondern auf einen anderen Speicherbereich. Geschieht das grundsätzlich mit malloc? Und was geschieht, wenn ich vorher free (text) eingebe? Wird "hallo" gelöscht?



  • erin schrieb:

    Anschließend will ich dieselbe Variable benutzen, um den String aus einer anderen Variablen hineinzukopieren.

    kannst du z.b. so machen

    char *text = "hallo";
    ...
    text = "doof";
    

    dann zeigt 'text' auf 'doof', aber das 'hallo' kriegste nicht mehr wieder, weil die adresse von 'hallo', die vorher in 'text' gespeichert war, überschrieben wurde...

    erin schrieb:

    Und was geschieht, wenn ich vorher free (text) eingebe? Wird "hallo" gelöscht?

    nö, mit free gibt man nur speicher wieder in den pool zurück, aus dem der vorher mit 'malloc', 'calloc' o.ä. geholt wurde. machst du 'free' mit einem anderen pointer, passiert entweder nichts oder es stürzt ab.



  • Danke, allmählich blicke ich durch. Ich habe etliche Jahre mit Delphi/Pascal programmiert und tu mich noch schwer mit einigen Dingen in C. Aber nun schreibe ich 100 mal: Strings sind Zeiger, Strings sind Zeiger ...


Anmelden zum Antworten