Поделиться через


_AddressOfReturnAddress

Только для систем Microsoft

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

void * _AddressOfReturnAddress();

Требования

Встроенный объект

Архитектура

_AddressOfReturnAddress

x86, x64

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

См. также

Ссылки

Встроенные объекты компилятора

Ключевые слова в C++