_AddressOfReturnAddress
Section spécifique à Microsoft
Fournit l’adresse de l’emplacement de mémoire qui contient l’adresse de retour de la fonction active. Cette adresse peut ne pas être utilisée pour accéder à d’autres emplacements de mémoire (par exemple, les arguments de la fonction).
Syntaxe
void * _AddressOfReturnAddress();
Spécifications
Intrinsic | Architecture |
---|---|
_AddressOfReturnAddress |
x86, x64, ARM, ARM64 |
Fichier<d’en-tête intrin.h>
Notes
Lorsqu’elle _AddressOfReturnAddress
est utilisée dans un programme compilé avec /clr, la fonction contenant l’appel _AddressOfReturnAddress
est compilée en tant que fonction native. Lorsqu’une fonction compilée en tant qu’appels managés dans la fonction contenant _AddressOfReturnAddress
, _AddressOfReturnAddress
peut ne pas se comporter comme prévu.
Cette routine est disponible uniquement en tant qu'intrinsèque.
Exemple
// 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
FIN de la section spécifique à Microsoft