【发布时间】:2012-10-04 03:25:47
【问题描述】:
当我连续编译和执行这段代码几次时,它报告 cc 的地址为 0x0012FF5C。但是,当我尝试使用 foo 中对 printf 的第二次调用来打印该地址处的字符串时,它会打印垃圾而不是打印出“Hello”?为什么这样??当我知道地址位于应用程序的地址空间内时,如果我直接将地址作为参数传递会有什么问题(至少直到我不重新启动我的电脑,或者启动其他需要大量空间的应用程序,这会导致我的申请要被调出)??
void foo(char *cc[])
{
printf("%x\n",cc);
printf("%s\n",(char *)(0x0012FF5C));
}
int main()
{
char *c[] = {"Hello","World"};
foo(c);
}
【问题讨论】:
-
您为什么要这样做,因为您只是在对冲使用相同地址的赌注?做一点改变,你就破坏了代码。似乎很愚蠢的事情要做甚至考虑。
-
请不要删除已回答的问题。有人努力回答你的问题。