次のコードがあるとしましょう。stはグローバルスタックであり、適切に初期化されます。foo()を呼び出します
struct stack *st;
int foo() {
int x = 1;
stack_push(st, &x);
}
これで、スタックにはxへのポインターが含まれます。fooがスコープ外になると、アドレス&xはどうなりますか?割り当てが解除されていますか?後でスタックをpop()して参照を解除したときに、値が1になると信頼できますか?
編集:これが私が現在考えていることです。xはスタックに割り当てられるため、スコープ外になると、アドレス&xで占有されているメモリは誰でも使用できます。したがって、後でpop()によって返される逆参照値は1ではない可能性があります。