Share via


_ReturnAddress

[Diese Dokumentation ist nur eine Vorschau und wird in späteren Versionen ggf. geändert. Blank topics are included as placeholders.]

Microsoft-spezifisch

Systeminterne _ReturnAddress stellt die Adresse der Anweisung in der aufrufenden Funktion, die ausgeführt wird, nachdem die Steuerung an den Aufrufer zurückkehrt.

Erstellen Sie das folgende Programm und den Schritt durch sie im Debugger. Wie Sie durch das Programm schrittweise ausführen, beachten Sie die Adresse, die von _ReturnAddresszurückgegeben wurde. Dann direkt nach der Rückgabe der Funktion, in der _ReturnAddress verwendet wurde, öffnen Sie Gewusst wie: Verwenden des Fensters "Disassembly" , und beachten Sie, dass die Adresse der nächsten Anweisung ausgeführte Übereinstimmungen zu kommunizieren, die die Adresse von _ReturnAddresszurückgibt.

Optimierungen wie das Inlining beeinflussen möglicherweise die Rückgabeadresse. Wenn z. B. das folgende Beispielprogramm mit /Ob1kompiliert wird, ist inline_func in die aufrufende Funktion inline main. Daher sind die Aufrufe _ReturnAddress von inline_func und main jedes Erzeugnis der gleiche Wert.

Wenn _ReturnAddress in einem Programm verwendet wird, die mit /clrkompiliert wird, wird die Funktion, die den _ReturnAddress Aufruf enthält, als systemeigene Funktion kompiliert. Wenn eine Funktion, die als verwaltete Aufrufe in die Funktion enthält _ReturnAddresskompiliert wird, _ReturnAddress sich nicht wie erwartet verhält.

Anforderungen

Headerdatei <intrin.h>

Beispiel

// compiler_intrinsics__ReturnAddress.cpp
#include <stdio.h>
#include <intrin.h>

#pragma intrinsic(_ReturnAddress)

__declspec(noinline)
void noinline_func(void)
{
   printf("Return address from %s: %p\n", __FUNCTION__, _ReturnAddress());
}

__forceinline
void inline_func(void)
{
   printf("Return address from %s: %p\n", __FUNCTION__, _ReturnAddress());
}

int main(void)
{
   noinline_func(); 
   inline_func();
   printf("Return address from %s: %p\n", __FUNCTION__, _ReturnAddress());

   return 0;
}

Siehe auch

Referenz

_AddressOfReturnAddress

Systeminterne Funktionen des Compilers

C++-Schlüsselwörter