下面程序会出现什么问题:
#include<stdio.h>
#include<stdlib.h>
int main()
{
char s[]="123456789";
char d[]="123";
strcpy(d,s);
printf("%s,\n%s",d,s);
return 0;
}
编译运行后结果是:
查看各个字节的地址 d的四个字节的地址分别为 fee2,fee3,fee4,fee5
s的十个字节的地址分别为 fee6,fee7,fee8,fee9·······feef;
压栈中向下生长,由高地址压入低地址,先压栈s中 ‘/0’ ,然后'9'8 7·············然后压入d的/0 3 2 1;
在strcpy前插入断点,运行前