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