Parameter im Speicher



  • Heho,

    Bsp: void func(int a,char *b,short c,char d[32])
    wenn ich mir hier die addresse von a,b,c,d ausgeben lasse, liegen diese exakt hintereinander im Speicher.

    Is das immer so, oder liegt das nur an meinem compiler?

    Dat wars schon, tschö



  • normalerweise werden die parameter auf den stack gepusht und in der funktion wieder gepoppt. Insofern wirst du es oft vorfinden, dass die parameter hintereinander im speicher liegen.

    Aber es muss nicht immer so sein - weil die Funktion zB geinlinet werden kann oder einige Parameter über Register übergeben werden.



  • Shade Of Mine schrieb:

    normalerweise werden die parameter auf den stack gepusht und in der funktion wieder gepoppt.

    Richtig. Eine Ausnahme wäre z.B. die Funktion printf(), bei der die Aufruffunktion cdecl benutzt wird. Hier muss der Aufrufer die Variablen selber wieder poppen.



  • Shade Of Mine schrieb:

    geinlinet

    👍 😃
    Fantastisches Wort



  • interpreter schrieb:

    Richtig. Eine Ausnahme wäre z.B. die Funktion printf(), bei der die Aufruffunktion cdecl benutzt wird. Hier muss der Aufrufer die Variablen selber wieder poppen.

    Das ist das normale verhalten 🙂
    mit dem 'die funktion poppt' meinte ich lediglich den vorgang, dass die funktion sich die parameter der reihe nach vom stack holt. dass dabei nicht wirklich gepoppt wird, halte ich hierbei für irrelevant.

    aber ud hast natürlich recht.

    @ethereal:
    sprichst du kein denglisch 😉



  • Dankeschön!


Anmelden zum Antworten