_AddressOfReturnAddress
[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 Blank topics are included as placeholders.]
Microsoft 固有の仕様 →
現在の関数のリターン アドレスを保持するメモリ位置のアドレスを指定します。 このアドレスは他のメモリ位置 (たとえば関数の引数) へのアクセスに使用されない場合があります。
void * _AddressOfReturnAddress();
必要条件
組み込み |
アーキテクチャ |
---|---|
_AddressOfReturnAddress |
x86x64 |
ヘッダー ファイル <intrin.h>
解説
_AddressOfReturnAddress が /clr でコンパイルされたプログラムで使用する場合 _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();
}