_AddressOfReturnAddress
Microsoft-spezifisch
Stellt die Adresse des Speicherspeicherorts bereit, der die Absenderadresse der aktuellen Funktion enthält. Diese Adresse kann nicht für den Zugriff auf andere Speicherspeicherorte verwendet werden (z. B. die Argumente der Funktion).
Syntax
void * _AddressOfReturnAddress();
Anforderungen
Intrinsic | Aufbau |
---|---|
_AddressOfReturnAddress |
x86, x64, ARM, ARM64 |
Headerdatei<intrin.h>
Hinweise
Wenn _AddressOfReturnAddress
in einem programmkompilierten Programm mit /clr kompiliert wird, wird die Funktion, die den _AddressOfReturnAddress
Aufruf enthält, als systemeigene Funktion kompiliert. Wenn eine Funktion als verwaltete Aufrufe in die Funktion kompiliert wird, die enthält _AddressOfReturnAddress
, _AddressOfReturnAddress
verhält sich dies möglicherweise nicht wie erwartet.
Diese Routine ist nur als systeminterne Funktion 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 _AddressOfReturnAddress
// (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
Ende Microsoft-spezifisch