Есть ли прямой способ сделать то, что делает pin_ptr?
-
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.
Не связан с StackOverflow