Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » foglendes

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.08.2005, 15:39 Uhr
kanonenvirus



also letzten feinheiten möchte ich von euch wissen die mich verwirren.


Man sagt doch das der Stack zu der niedrigsten Adresse wächst, legt man neue Daten ab. Aber was ist damit gemeint?

Sagen wir mal wir haben die Adressen 0000638ch und 000063c4h. Wcäsht jetzt jetzt zu der niedrigsten(kleinste hin), sprich nach oben oder ist damit gemeint das er zu der niedrigsten hinwächst(sprich nach unten)?

Und noch was wenn ich diesen Code hier vor mir habe:

C++:
void main2(Parameter 1, Parameter 2)
{
int x = 20, y = 30, z;

x = 40;
y = 60;
z = x + y;

return (x + y);
}



Wie würde es dann im Stack ungefähr aussehen? Werden die Variablen jetzt von unten nach oben ausgelsen und dann von unten nach oben auf den Stack gebracht? Und soweit ich verstanden habe fidet die Parameterübergabe von rechts nach links stat. Stimmt das?

Und wenn man die Variablen jetzt mehrmals(wie oben ) mit neuen Werten zuweist, werden diese Werte dann ebenfalls auf dem stack abgelegt? Und Wird eine einfache Variablen deklaration(int z; ) auch auf den Stack gebracht oder muss man diese mit einem Wert initialisieren(int z = 150), damit diese auf den Stack als Wert gebracht werden kann??


Code:
0000638ch:  Variable x(20)
00006390h:  Variable y(30)
00006394h:  Variable x(40)
00006398h:  Variable y(60)
0000639ch:  Variable z
000063a0h:  extended base pointer
000063a4h:  Rücksprungadresse
000063a8h:  Parameter 1
000063ach:  Parameter2




Laut mir würde es so auf dem Stack aussehen und es heisst der Stack wächst nach oben bzw. zu der kleineren Zahl hin. IOch hoffe Ihr könnt mir helfen. ABER BITTE KEINE SELBSTGESPRÄCHE WIEDER OK? ^^ Danke

mod edit: Code und CPP Tags hinzugefügt. Bitte, es selber tun.

Dieser Post wurde am 05.08.2005 um 14:14 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.08.2005, 17:07 Uhr
kanonenvirus



natürlich muss der rückgabe wert void sein und nicht int loooool. Was für ein Gehler.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.08.2005, 19:52 Uhr
Tommix




Zitat von kanonenvirus:
natürlich muss der rückgabe wert void sein und nicht int


Vielleicht solltest Du mal ein paar Tage ausspannen und das Buch weglegen.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.08.2005, 19:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


er wächst je nachdem wie rum man nun den adressspeicher nummeriert an, wenn du sagst der addressspeicher geht von 0 bis xx dann wächst er nach oben (zur 0 hin) wenn der Adressspeicher von xx nach 0 geht dann wächst er eben nach unten (ebenfalls zur 0 hin).
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.08.2005, 20:37 Uhr
DarthDevilous



Ich bin mir nichr mehr sicher, welchen weg um das der stack wächst (ich glaube nach unten, d.h. je später eine varible deklariert desto niedriger ist die adresse im speicher). Zu den anderen fragen:
Bei der deklaration einer variable wird der nötige speicherplatz gepusht, d.h. der esp wird weiterverschoben (esp ist der register "extended stack pointer", der auf den stack zeigt). Falls du die varible initialisierst (muss nicht sein), kann bei eingebauten typen (int char etc) schon beim pushen direkt der wert auf den stack gepusht werden, ansonsten wird der esp vershoben und dann wird dem reservierten speicher einen wert zugewiesen. Wenn du später im programm der gleichen varible einen anderen wert zuweist (oder auch denselben wert :P ) wird dieser wert natürlich an der bei der deklaration der variable reservierten stelle abgespeichert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.08.2005, 21:17 Uhr
kanonenvirus



Ich meine jetzt so wie ich oben drgestellt habe wächst er da nach oben oder wächst er nach unten?. Das meine ich. Auf das obige meinige Beispiel bezogen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.08.2005, 21:28 Uhr
~DarthDevilous
Gast


unten, glaub ich, denn die variablen, die ja nach den parametern auf den stack gehen, haben eine tiefere adresse.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: