MSVC 相当于“__builtin_return_address”
对于msvc,是否有与gcc的“__builtin_return_address”等效的东西?
我正在寻找调用函数的地址,深度为 1 层。
With msvc, is there an equivalent to gcc's "__builtin_return_address"?
I'm looking to find the address of the calling function, 1 level deep.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
__ReturnAddress
来自 MSDN:
请注意,在某些平台上,由于尾部折叠,结果可能会产生误导 - 编译器可能会让您的内部函数返回 2 层深度。 对于这样的代码,通常会发生这种情况:
编译器可以生成代码,以便 DoSomethingSpecial 直接返回到 DoSomething 的调用者。
此外,返回地址不够可信,不足以做出安全决策,请参阅
__ReturnAddress
From MSDN:
Note that on some platforms, the result could be misleading due to tail folding - the compiler might have your inner function return 2 levels deep. This can commonly occur for code like this:
The compiler could generate code so DoSomethingSpecial returns directly to the caller of DoSomething.
Also, the return address is not trustworthy-enough to make security decisions, see here.