MSVC equivalente a '__builtin_return_address'
-
22-08-2019 - |
Pergunta
Com msvc, existe um equivalente ao "__builtin_return_address" do gcc?
Eu estou olhando para encontrar o endereço da função de chamada, 1 nível profundo.
Solução
De MSDN:
O intrínseca _ReturnAddress fornece o endereço da instrução no função de chamada que será executado após o controle retorna para o chamador
Note que em algumas plataformas, o resultado poderia ser enganosa devido à cauda dobrar - o compilador pode ter seu retorno de função interna 2 níveis de profundidade. Isso pode comumente ocorrer por código como este:
int DoSomething()
{
return DoSomethingSpecial();
}
O compilador pode gerar código para DoSomethingSpecial retorna diretamente para o chamador de DoSomething.
Além disso, o endereço de retorno não é confiável o suficiente para tomar decisões de segurança, consulte aqui .