本帖最后由 人造人 于 2017-12-26 20:31 编辑 #include"stdio.h"
char *GetString(void)
{
char str[] = "hello world!";
return str;
}
int main(void)
{
char *str = GetString();
printf("%c\n", *str++);
printf("%c\n", *str++);
printf("%c\n", *str++);
printf("%c\n", *str++);
printf("%c\n", *str++);
return 0;
}
GetString函数成功返回了字符串
字符h已经保存下来了
字符串hello world还没有被覆盖
进入printf内部
字符h在rdx寄存器中保存,字符串还没有被覆盖
字符串已经被覆盖
字符h还在rdx寄存器中保存着
字符h成功输出
字符串hello world已经不在
字符串hello world已经不在
rax寄存器保存的不是字符e,也就是说无法输出字符e
无法输出字符e
字符串hello world已经不在
其他字符也无法输出
|