int main(int argc, char* argv[])
{
int buf[1];
int i;
for(i=2;i<100;i++ )
{
buf[-i] = 12345678; //初始化堆栈
}
printf("%d");
return 0;
}
这段代码要表达的意思是:
先将main的一段栈区初始化为12345678(从2开始是为了防止变量i被覆盖),esp指向的区域也在其中。
然后调用变参函数printf("%d"),因为没有指定%d对应的参数,所以实际打印的是形参"%d"后面的那个栈内容(已经被初始化了的),因此输出12345678。
{
int buf[1];
int i;
for(i=2;i<100;i++ )
{
buf[-i] = 12345678; //初始化堆栈
}
printf("%d");
return 0;
}
这段代码要表达的意思是:
先将main的一段栈区初始化为12345678(从2开始是为了防止变量i被覆盖),esp指向的区域也在其中。
然后调用变参函数printf("%d"),因为没有指定%d对应的参数,所以实际打印的是形参"%d"后面的那个栈内容(已经被初始化了的),因此输出12345678。