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)
    }
};
¿Fue útil?

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
scroll top