0

私はスタックメモリトレースの水域に最初のダイビングをしているので、あなたの助けが必要です。これが私があなたのヒントを必要とする私の問題です:

loginとlogout()の2つの関数があります。単純な条件が1つあります。

  • login()を呼び出してセッションを作成する場合、プログラムのどこかでlogout()を呼び出す必要があります。そうしないと、エラーが生成されます。

私はコンパイル時にそれを行うことができないと信じているので、実行時にそれをしなければなりません(私は間違っている可能性があります)。

問題は、main()が返される前に、プログラムでlogout()が呼び出されていることを確認し、呼び出されていない場合にエラーを生成する方法です。

実行時に、login()の後に呼び出すすべての関数は、それが最後の関数呼び出しであるかどうかを確認してから、logout()が以前に呼び出されたかどうかを確認する必要があると考えていました。

では、実行時に、main()が戻る前に、プログラムが最後に呼び出した関数が特定の関数であることをどのように知ることができますか?

どんな助けでもいただければ幸いです。

4

1 に答える 1

3

1 つの方法は、おそらく最も適切ではありませんが、loggedIn = 1 という変数を使用し、その参照を渡して、logout() が変数をゼロに設定できるようにすることです。main() から戻る前にゼロであることを確認してください。

関数が戻った後、そのアドレスは既にスタックからポップされています。

于 2012-04-19T07:10:34.620 に答える