Hirdetés

Új hozzászólás Aktív témák

  • skylaner
    senior tag

    Hát a globális (illetve statikus) változók azok benne vannak a program fejlécében (objdump -h kimenetben data+bss). Lokális változók méreténél (ideértve a függvényargumentumokat is) nem tudom mit szeretnél tudni, esetleg a maximális verem méretet? Mivel ismereteim szerint linux alatt a verem nem csökken, ezért azt elvileg ki lehet nyomozni a futás végén. Például gdb-vel breakpoint az exit függvényre és a /proc/<pid>/maps fájlban a stack bejegyzésből.

    Na pl:

    typedef struct szam{
    int a;
    int b;
    } SZAM;

    void szum(int a,int b)
    {
    printf("%d\n",a+b);
    }
    int main()
    {
    SZAM* sz;
    sz=(SZAM*)malloc(sizeof(SZAM));
    sz->a=4;
    sz->b=5;
    szum(sz->a,sz->b);
    free(sz);
    sz=NULL;
    return 0;
    }

    sz: 4 byte
    *sz: 8byte
    2 int másolat: 8byte

    Tehát ennek összesen akkor min 20byte memória kell a program egy adott pontján.
    Valami ilyesmire gondoltam.

Új hozzászólás Aktív témák