重複の可能性:
ローカル変数のメモリにそのスコープ外でアクセスできますか?
以下のプログラムでこの出力が得られる理由を理解しようとしています
[hello] [0xbfde68f4]
[world] [0xbfde68f4]
[world] [0xbfde68f4]
プログラムは
int main(void)
{
char **ptr1 = NULL;
char **ptr2 = NULL;
ptr1 = func1();
ptr2 = func2();
printf(" [%s] [%p]\n",*ptr1, (void*)ptr1);
printf(" [%s] [%p]\n",*ptr2, (void*)ptr2);
printf(" [%s] [%p]\n",*ptr1, (void*)ptr1);
return 0;
}
char** func1()
{
char *p = "hello";
return &p;
}
char** func2()
{
char *p = "world";
return &p;
}
ローカル変数のアドレスを返すのは良い習慣ではないことは理解していますが、これは単なる実験です。