stack kaputt?



  • kurze frage

    void nix(short h)
    {
    printf("%d", h);
    }
    

    mach mir das den stack kaputt oder wird das Problem vom compiler erkannt und behoben?



  • ...



  • sagichnicht schrieb:

    kurze frage

    void nix(short h)
    {
    printf("%d", h);
    }
    

    mach mir das den stack kaputt oder wird das Problem vom compiler erkannt und behoben?

    Es gibt kein Problem.

    Es gäbe ein Problem in folgendem Falle:
    Der Aufrufer tut einen short auf den Stack. Die aufgerufene Funktion printf denkt, da wäre ein int und tut beim Beenden einen int wegmachen.

    Das passiert aber nicht. Mindestens Funktionen mit Ellipsen, wie printf, verwenden die C-Calling-Konvention, wo der Aufrufer, der den Stack mit Funktionsargumenten bestückt, nach dem Funktionsablauf auch wieder selber aufräumt, was er draufgetan hat.

    (Abgesehen davon wird bei printf der short eh zu einem int gemacht vor dem Aufruf, aber darum gehts hier wohl nicht.)


Anmelden zum Antworten