Domanda

Il comportamento di pin_ptr può essere ottenuto direttamente in C ++ / CLI? Ad esempio, è possibile scrivere direttamente il codice CLR, qualcosa come asm per le app native?

Un esempio di ciò che vorrei fare è un wrapper per un pin_ptr (impossibile a causa delle restrizioni sui pin_ptr ).

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)
    }
};
È stato utile?

Soluzione

Utilizza un GCHandle.Alloc . con GCHandleType.Pinned . È quindi possibile utilizzare GCHandle.AddrOfPinnedObject per ottenere l'indirizzo dell'oggetto .NET.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top