Kezdőoldal » Számítástechnika » Programozás » Mekkora egy függvény stackjéne...

Mekkora egy függvény stackjének valódi mérete x86-os processzorokon windows xp sp3 mellett?

Figyelt kérdés

Íme az alábbi programom:

#include <cstring>


void function(char *str)

{

char buffer[1024];

strcpy(buffer,str);

}

int main(int argc,char *argv[])

{

char aaa[500];

function(argv[1]);

}


Természetesen a program híbás( direkt)

Kíváncsi voltam a stackjének pontos méretére.

Ezért csináltam a perl srciptet, először a programom ezt csinálta:

print "A" x 1032;

Majd az eredményt bemásoltam argomentumnak a saját programomhoz.

A program lefagyot, de nem úgy ahogy azt vártam.

Vagyis ahogy eddig tudtam, hogy a stack mérete ebben az esetben a tömb elemeinek száma+a EBP regiszter mérete( 4 byte)+ az EIP regiszter mérete.

Ezután próbálkoztam tovább, végül 1036-1040 byte-ra került a valódi EIP regiszter.De nem értem miért?

A programot Dev-cpp 4.9.9.2-es verzióval fordítotam. Mi ez a négybyte-os regiszter ami ottmaradt?


Nem értem miért van így. Valaki tudja erre a választ?



2013. jún. 3. 11:54
 1/1 iostream ***** válasza:
Namost nálad 8 byte eltérés van a tömb + két regiszterhez képest, amiből 4 byte az str pointer.
2013. jún. 3. 12:17
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!