هل هناك أي طريقة مباشرة لفعل ما 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