次のコードを定義するとします。
int *func()
{
int *p=(int *)malloc(sizeof(int)); // memory is allocated from heap
// which can be accessed anytime.
return p; // but we created p which has a local scope and vanishes as
//soon as function exits.
}
では、これはどのように機能しますか?p はローカル変数 (動的メモリへのアドレスを保持するポインタ) です。つまり、HEAP からのメモリ自体は確実に存在し続けるはずですが、ポインター変数にはローカル スコープがあります。どうしてこのポインターを取得できるのでしょうか?