C'è un modo diretto per fare ciò che fa pin_ptr?
-
06-07-2019 - |
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)
}
};
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