私は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
格納されているか。スタック、またはヒープ?