Question

Avec msvc, est-il un équivalent à la "__builtin_return_address" de gcc?

Je cherche à trouver l'adresse de la fonction d'appel, 1 niveau profond.

Était-ce utile?

La solution

__ReturnAddress

De MSDN:

  

La intrinsèque _ReturnAddress fournit   l'adresse de l'instruction dans la   fonction d'appel qui sera exécuté   après le contrôle revient à l'appelant

Notez que sur certaines plates-formes, le résultat pourrait être trompeur en raison de pliage de queue - le compilateur peut avoir votre retour de la fonction intérieure profonde 2 niveaux. Cela peut généralement se produire pour le code comme ceci:

int DoSomething()
{
   return DoSomethingSpecial();
}

Le compilateur peut générer du code si DoSomethingSpecial retourne directement à l'appelant de DoSomething.

En outre, l'adresse de retour est pas digne de confiance, assez pour prendre des décisions de sécurité, voir ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top