Frage zu Speicher
-
Hallo,
int x=3;
sagen wir der Wert ist in der Adresse 0x00FFFFF gespeichert
wird der Name der Variable also x auch gespeichert ?
-
Das ist die Aufgabe deines Compilers.
-
blurry1234 schrieb:
wird der Name der Variable also x auch gespeichert ?
Nein, zur Laufzeit hast du in C++ keine Informationen mehr über Dinge wie Variablennamen.
Kóyaánasqatsi schrieb:
Das ist die Aufgabe deines Compilers.
Ist es nicht.
-
Proxler schrieb:
Ist es nicht.
Doch natürlich, wie sonst?
EDIT:
Meine Aussage stand in keiner Beziehung in Verbindung mit der Laufzeit.
-
denk ich auch mal. macht irgendwo Sinn.
Dann wird x eben durch die Speicheradresse ersetzt.
Der Mensch kann sich eben namen besser merken als Zahlen.
Man denke nur ans www .
-
Kóyaánasqatsi schrieb:
Doch natürlich, wie sonst? Meine Aussage stand in keiner Beziehung in Verbindung mit der Laufzeit.
Die Aufgabe eines Compiler besteht _nicht_ darin den Namen der Variablen zu speichern. Und wenn du dich auf was anderes bezogen hast, bringt dein Post erst recht nichts.
blurry554 schrieb:
Der Mensch kann sich eben namen besser merken als Zahlen.
Tatsache ist, dass du den Variablennamen zur Laufzeit so gut wie nie brauchst.
-
Kóyaánasqatsi schrieb:
EDIT:
Meine Aussage stand in keiner Beziehung in Verbindung mit der Laufzeit.In welcher Beziehung dann? Wo soll der Kompiler deiner Meinung nach den Variablennamen speichern? Oder meinst du einfach, dass der Kompiler intern eine Assozierung macht? Jedenfalls steht am Ende im Binary nach dem Linken (also nicht nach dem Kompilieren) kein Variablennamen mehr da. In den einzelnen Objectfiles könnten sie aber womöglich noch dort stehen. Zumindest vor allem die, welche exportiert/importiert werden. Schliesslich müssen die beim Linken irgendwie zusammengeführt werden. Wobei allerdings überhaupt nirgends eine Vorschrift besteht, ob da der Name nicht auch verändert werden darf nach bestimmten Regeln.
Also grundsätzlich: Nein, der Kompiler speichert die nicht ab und es ist auch nicht seine Aufgabe.
Grüssli
-
Dravere schrieb:
Also grundsätzlich: Nein, der Kompiler speichert die nicht ab und es ist auch nicht seine Aufgabe.
Wenn man ausgewählt hat, dass Debuginformationen mit eingebunden werden sollen, dann speichert er die durchaus.
-
noch nee andere Frage
der stack der STL ist intern als Liste implementiert oder ?
-
blurry3330 schrieb:
noch nee andere Frage
der stack der STL ist intern als Liste implementiert oder ?
Schau halt in der Sourcedatei nach.
Bei g++ ist es standardmäßig deque, kannst du aber selbst angeben (mithilfe des zweiten Templateparameters).
-
Athar schrieb:
Dravere schrieb:
Also grundsätzlich: Nein, der Kompiler speichert die nicht ab und es ist auch nicht seine Aufgabe.
Wenn man ausgewählt hat, dass Debuginformationen mit eingebunden werden sollen, dann speichert er die durchaus.
Sowas kommt ganz auf den Kompiler an. Der MSVC speichert die Symbole zum Beispiel extern in einem PDB File ab. Zudem muss kein C++ Kompiler dieser Welt ein Debugmodus anbieten.
Daher grundsätzlich immer noch nein. Ich schreibe ja grundsätzlich, klar gibt es Fälle, aber das sind meiner Meinung nach Spezialfälle.
blurry3330 schrieb:
der stack der STL ist intern als Liste implementiert oder ?
Im Standard wird die Schnittstelle von
std::stackmit einem default Parameterstd::dequeangegeben. Die Verbindlichkeit dieser Source Listings ist aber oft nicht ganz so klar.Wie Athar gesagt hast, kannst du es über den zweiten Templateparameter selber angeben:
http://www.cplusplus.com/reference/stl/stack/Grüssli