Есть ли прямой способ сделать то, что делает pin_ptr?

StackOverflow https://stackoverflow.com/questions/1016928

  •  06-07-2019
  •  | 
  •  

Вопрос

Может ли поведение pin_ptr быть реализовано непосредственно в C ++ / CLI? Например, можно ли написать код CLR напрямую, например, asm для собственных приложений?

Пример того, что я хотел бы сделать, - это обертка для pin_ptr (невозможно из-за ограничений на 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)
    }
};
Это было полезно?

Решение

Используйте GCHandle.Alloc . с GCHandleType.Pinned . Затем вы можете использовать GCHandle.AddrOfPinnedObject чтобы получить адрес объекта .NET.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top