-
        

Ergebnis 1 bis 4 von 4

Thema: C++ Hinweis: variable 'pHelp' set but not used [-Wunused-but-set-variable]

  1. #1
    geWichtig
    Gast

    C++ Hinweis: variable 'pHelp' set but not used [-Wunused-but-set-variable]

    Anzeige

    Tag
    ich habe folgenden Code geschrieben:

    int main ()
    {
    //zwei Zeiger
    ptrCar* pCar;
    ptrCar* pHelp;
    pCar = new ptrCar();
    pHelp = new ptrCar();
    pCar->color();
    pHelp = pCar;
    pCar->end();

    return 0;
    }

    und bekomme diesen Hinweis: "variable 'pHelp' set but not used [-Wunused-but-set-variable]".
    Ich verstehe nicht warum ich diese Meldung erhalte. Denn der Zeiger wird doch genutzt , oder nicht? Er wird doch dereferenziert und wird auf pCar positioniert. Also warum diese Meldung?

    danke

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.161
    Davon abgesehen, dass du gerade nicht mehr referenzierten Speicher erzeugt hast (Das ist böse), weil du zuerst mit pHelp = new ptrCar(); neuen Speicher allokierst und dann aber mit pHelp = pCar dem Pointer pHelp die Adresse von pCar zuweist macht die Meldung schon sinn. (Der Speicher der mit pHelp = new ptrCar() allokiert wurde kann jetzt nicht mehr erreicht werden)

    Du hast nur zwei Zuweisungen auf die Variable, machts aber sonst nicht mehr. Der Kompiler ist an der Stelle so "intelligent" und merkt das. Würdest du jetzt pHelp->end() aufrufen würde die Meldung verschwinden.

    Außerdem wird pHelp an keiner Stelle dereferenziert. Ihm wird wie gesagt nur pCar zugewiesen.
    Der dereferenzierungsoperator wäre in dem Fall:

    (*pHelp)
    Beziehungsweise für Aufrufe auf den dereferenzierten Pointer:
    pHelp->end();
    das ist eine Kurzschreibweise für (*pHelp).end();

  3. #3
    geWichtig
    Gast
    danke shedepe!
    Das die Meldung ausgegeben wurde liegt also an der "Speicherleiche".

    Ich habe da noch eine Frage zur Dereferenzierung. Was genau gilt als Dereferenzierung?
    Soweit ich weiß, bedeutet das, dass auf ein Zeiger zugegriffen wird.

    Ist damit nun der Zugriff auf die Speicheradresse des Zeigers gemeint oder der Wert der Variable, auf dem über den Zeiger zugegriffen wird?

    Und unter dem Begriff "Zugriff" verstehe ich lesen und schreiben.

    Wäre nett wenn mich jemand aufklärt
    danke

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.161
    Dereferenzierung bedeutet: ich will auf den Wert hinter einer Speicheradresse zugreifen. Ob man da nur liest oder nicht egal. Im konkrete bei C++ meint das die Anwendung des Derefrenzierungsoperators * bzw ->

    Und die Meldung liegt nicht an der Speicherleiche sondern, dass du mit dem Pointer pHelp nichts machst.

Ähnliche Themen

  1. WriteString mit Variable
    Von neo3000 im Forum Robby RP6
    Antworten: 5
    Letzter Beitrag: 27.10.2010, 11:48
  2. Problem mit Variable
    Von Cybererror im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 26.02.2010, 09:29
  3. String-Variable
    Von martin66119 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 29.10.2007, 11:26
  4. Variable Portauswahl
    Von McJenso im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 14.10.2007, 15:49
  5. if Variable > 1 then Variable + 1
    Von klaus1973 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 26.11.2005, 15:31

Benutzer, die dieses Thema gelesen haben: 8

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •