Freigeben über


_AddressOfReturnAddress

Microsoft-spezifisch

Stellt die Adresse der Speicheradresse bereit, die die Rückgabeadresse der aktuellen Funktion enthält. Diese Adresse kann nicht verwendet werden, um andere Speicherorte (z. B. die Argumente der Funktion) zuzugreifen.

void * _AddressOfReturnAddress();

Anforderungen

Intrinsisch

Architektur

_AddressOfReturnAddress

x86, x64

Headerdatei <intrin.h>

Hinweise

Wenn _AddressOfReturnAddress in einem Programm verwendet wird, die mit /clr kompiliert wird, wird die Funktion, die den _AddressOfReturnAddress Aufruf enthält, als systemeigene Funktion kompiliert. Wenn eine Funktion, die als verwaltete Aufrufe in die Funktion enthält _AddressOfReturnAddress kompiliert wird, _AddressOfReturnAddress sich nicht wie erwartet verhielte.

Diese Routine ist als systeminterne Funktion nur verfügbar.

Beispiel

// 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();
}
  

Siehe auch

Referenz

Intrinsische Compilerfunktionen

C++-Schlüsselwörter