_AddressOfReturnAddress
Seção específica da Microsoft
Fornece o endereço do local de memória que contém o endereço de retorno da função atual. Esse endereço pode não ser usado para acessar outros locais de memória (por exemplo, os argumentos da função).
Sintaxe
void * _AddressOfReturnAddress();
Requisitos
Intrinsic | Arquitetura |
---|---|
_AddressOfReturnAddress |
x86, x64, ARM, ARM64 |
Arquivo de cabeçalho<intrin.h>
Comentários
Quando _AddressOfReturnAddress
é usado em um programa compilado com /clr, a função que contém a chamada _AddressOfReturnAddress
é compilada como uma função nativa. Quando uma função compilada como gerenciada chama a função que contém _AddressOfReturnAddress
, _AddressOfReturnAddress
talvez não se comporte conforme o esperado.
Essa rotina só está disponível como função intrínseca.
Exemplo
// 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
Fim da seção específica da Microsoft