_AddressOfReturnAddress

Microsoft 专用

提供保存当前函数返回地址的内存位置的地址。 此地址不能用于访问其他内存位置,(例如函数的参数)。

语法

void * _AddressOfReturnAddress();

要求

Intrinsic 体系结构
_AddressOfReturnAddress x86、x64、ARM、ARM64

头文件<intrin.h>

备注

在使用 /clr 编译的程序中使用_AddressOfReturnAddress 时,包含 _AddressOfReturnAddress 调用的函数将编译为本机函数。 当按托管方式编译的函数调用包含 _AddressOfReturnAddress 的函数时,_AddressOfReturnAddress 可能无法按预期方式运行。

此例程仅可用作内部函数。

示例

// compiler_intrinsics_AddressOfReturnAddress.cpp
// processor: x86, x64
#include <stdio.h>
#include <intrin.h>

// This function will print three values:
//   (1) The address retrieved from _AddressOfReturnAdress
//   (2) The return address stored at the location returned in (1)
//   (3) The return address retrieved the _ReturnAddress* intrinsic
// Note that (2) and (3) should be the same address.
__declspec(noinline)
void func() {
   void* pvAddressOfReturnAddress = _AddressOfReturnAddress();
   printf_s("%p\n", pvAddressOfReturnAddress);
   printf_s("%p\n", *((void**) pvAddressOfReturnAddress));
   printf_s("%p\n", _ReturnAddress());
}

int main() {
   func();
}
0012FF78
00401058
00401058

结束 Microsoft 专用

另请参阅

编译器内部函数
关键字