私はCの初心者です。次のようなプログラムがあります。
int main()
{
char* func();
char *c;
c = func();
printf("%s", c);
}
char* func()
{
char *ptr = "OK";
return ptr;
}
ご存知のように、ptrは のローカル変数でfunc()あり、 はポインターです。スコープはローカルです。しかし、ptrが呼び出し元に返されるとmain、それはまだ有効であり、cが出力されると "OK" が出力されます。
これはどのように可能ですか?どのメモリ セグメントにptr格納されているか。スタック、またはヒープ?