使用msvc,是否有相当于gcc的“__builtin_return_address”?
我正在寻找调用函数的地址,深度为1级。
答案 0 :(得分:9)
来自MSDN:
_ReturnAddress内在提供 中的指令地址 调用将要执行的函数 控制后返回调用者
请注意,在某些平台上,由于尾部折叠,结果可能会产生误导 - 编译器可能会让您的内部函数返回2级深度。这通常适用于以下代码:
int DoSomething()
{
return DoSomethingSpecial();
}
编译器可以生成代码,因此DoSomethingSpecial直接返回给DoSomething的调用者。
此外,返回地址不足以做出安全决策,请参阅here。