_AddressOfReturnAddress

Блок, относящийся только к системам Майкрософт

Предоставляет адрес расположения памяти, в котором содержится возвращаемый адрес текущей функции. Этот адрес не может использоваться для доступа к другим расположениям памяти (например, аргументы функции).

Синтаксис

void * _AddressOfReturnAddress();

Требования

Intrinsic Архитектура
_AddressOfReturnAddress x86, x64, ARM, ARM64

Файл<заголовка 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();
}
0012FF78
00401058
00401058

Завершение блока, относящегося только к системам Майкрософт

См. также

Встроенные компоненты компилятора
Ключевые слова