_AddressOfReturnAddress
Specyficzne dla firmy Microsoft
Zawiera adres lokalizacji pamięci, która zawiera adres zwrotny bieżącej funkcji. Ten adres może nie być używany do uzyskiwania dostępu do innych lokalizacji pamięci (na przykład argumentów funkcji).
Składnia
void * _AddressOfReturnAddress();
Wymagania
Nieodłączny | Architektura |
---|---|
_AddressOfReturnAddress |
x86, x64, ARM, ARM64 |
Plik<nagłówka intrin.h>
Uwagi
Gdy _AddressOfReturnAddress
jest używany w programie skompilowanym za pomocą /clr, funkcja zawierająca _AddressOfReturnAddress
wywołanie jest kompilowana jako funkcja natywna. Gdy funkcja skompilowana jako zarządzane wywołania do funkcji zawierającej _AddressOfReturnAddress
element _AddressOfReturnAddress
może nie zachowywać się zgodnie z oczekiwaniami.
Ta rutyna jest dostępna tylko jako wewnętrzna.
Przykład
// 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
END Microsoft Specific