0

我正在第一次潜入堆栈内存跟踪的水域,所以我需要你的帮助。这是我的问题,我需要您的提示:

我有两个函数:登录和注销()。有一个简单的条件:

  • 如果我调用 login() 来创建会话,那么在我的程序中的某个地方,应该调用 logout() 否则应该会产生错误。

我相信我不能在编译时做,所以我必须在运行时做(我可能是错的)。

问题是我如何发现在 main() 返回之前在我的程序中调用了 logout() 并在未调用时生成错误。

我在想,在运行时,我在 login() 之后调用的每个函数都应该检查它是否是最后一个函数调用,然后查看 logout() 之前是否被调用过。

那么我如何在运行时知道某个函数是我的程序在 main() 返回之前调用的最后一个函数?

任何帮助,将不胜感激。

4

1 回答 1

3

一种可能不是最好的方法是使用变量loggedIn = 1,并传递对它的引用,以便logout() 可以将其设置为零。在从 main() 返回之前检查它是否为零。

函数返回后,它的地址已经从堆栈中弹出。

于 2012-04-19T07:10:34.620 回答