#include<stdio.h>
#include<stdlib.h>
char* re()
{
char *p = "hello";
return p;
}
int main()
{
char* tem = re();
printf("%s", tem);
return 0;
}
私のコンパイラは Dev-C++ です。re の関数が完了すると、p のポインタが削除され、p が指していたスタック空間も削除されると思います。そのため、'tem' のポインターは、'p' が指すスタック空間にアクセスできません。私の意見では、このコードにはいくつかのバグが表示されます。しかし、なぜですか?
この問題は私を長い間ゆがめます。理由を教えていただければ、あなたの親切な心に感謝します。