Как вы пишете память, выделенную маршалом.AllocHGlobal()?Как связать память, выделенную Marshal.AllocHGlobal() в C#?
Моя первая попытка была следующая:
int bytes = 10;
IntPtr ip = Marshal.AllocHGlobal(bytes);
GCHandle iph = GCHandle.Alloc(ip, GCHandleType.Pinned);
Хотя я думаю, что это только прикрепляет IntPtr
, а не блок памяти ссылается IntPtr
.
Хорошо, спасибо за разъяснение этого. Причина, по которой я спрашиваю, заключается в том, что я пишу код, который вызывает функцию dll, которая принимает IntPtr, и создает и прикрепляет неуправляемый объект к этому IntPtr. Когда я затем вызываю другую функцию dll, которая пытается получить доступ к этому неуправляемому объекту через IntPtr, он выдает «System.AccessViolationException». Я думал, что не связать неуправляемый объект с этим связано. Хотя мне кажется, что я еще не совсем понял, что делать. Думаю, мне придется задать еще один вопрос. Спасибо, в любом случае :) – cycloidistic