6

使用 msvc,是否有等效于 gcc 的“__builtin_return_address”?

我正在寻找调用函数的地址,深度为 1 级。

4

1 回答 1

11

__退货地址

来自 MSDN:

_ReturnAddress 内部函数提供调用函数中指令的地址,该函数将在控制权返回给调用者后执行

请注意,在某些平台上,由于尾部折叠,结果可能会产生误导 - 编译器可能会让您的内部函数返回 2 层深。像这样的代码通常会发生这种情况:

int DoSomething()
{
   return DoSomethingSpecial();
}

编译器可以生成代码,以便 DoSomethingSpecial 直接返回给 DoSomething 的调用者。

此外,返回地址不够可靠,无法做出安全决定,请参见此处

于 2009-05-18T18:50:44.533 回答