Existe alguma maneira direta para fazer o que pin_ptr faz?
-
06-07-2019 - |
Pergunta
Pode o comportamento de pin_ptr ser alcançado diretamente em C ++ / CLI? Por exemplo, é possível código CLR escrita diretamente, algo como asm
para aplicativos nativos?
Um exemplo do que eu gostaria de fazer é um wrapper para um pin_ptr
(impossível devido às restrições sobre pin_ptr
s).
class WrappedPtr
{
public:
explicit WrappedPtr(String^ s)
{
pin = PtrToStringChars(s);
// I want to pin s for the lifetime of this object (only used on the stack)
}
};
Solução
Use a GCHandle.Alloc . com GCHandleType.Pinned . então você pode usar GCHandle.AddrOfPinnedObject para obter o endereço do objeto .NET.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow