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.

Foi útil?

Solução

__ReturnAddress

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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top