[求助]栈的问题
#include <stdio.h>
#include <conio.h>
int StackTest()
{
int b=2;
int a=1,*ptr;
int c=3;
ptr=&a;
printf("a的地址是:%d\n",&a);
ptr+=1;
//此处加1,则顺利执行,b的值被置零
//加2 ,弹出错误
//加3,弹出错误
*ptr=0;
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
printf("堆栈已破坏,函数将不能正常返回!");
return 0;
}
int main()
{
int d=9;
printf("d的地址是:%d\n",&d);
StackTest();
printf("d的值是:\n");
printf("%d\n",d);
return 0;
}
&a=1244960,&d=1245052,相差92,为什么会差这么大的空间?
执行的时候,d先入栈,然后pc,sr,bp,然后是StackTest()函数的局部变量b,a,ptr,c,但为什么a和d的在栈中的地址相差那么大呢(92)?