¿Hay alguna forma directa de hacer lo que hace pin_ptr?
-
06-07-2019 - |
Pregunta
¿Se puede lograr el comportamiento de pin_ptr directamente en C ++ / CLI? Por ejemplo, ¿es posible escribir código CLR directamente, algo como asm
para aplicaciones nativas?
Un ejemplo de lo que me gustaría hacer es un contenedor para un pin_ptr
(imposible debido a las restricciones en 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)
}
};
Solución
Utilice un GCHandle.Alloc . con GCHandleType.Pinned . Luego puede usar GCHandle.AddrOfPinnedObject para obtener la dirección del objeto .NET.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow