Mekkora egy függvény stackjének valódi mérete x86-os processzorokon windows xp sp3 mellett?
Í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?
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!