Я хотел бы сделать Marshal.AllocHGlobal
в управляемом коде, заполнить его данными и передать этот блок памяти неуправляемому (C ++) коду, который затем будет отвечать за его освобождение.
Под капотомMarshal.AllocHGlobal
звонит LocalAlloc
(и, наверное, LocalLock
).Но для того, чтобы неуправляемый код вызывал LocalFree, ему нужен HLOCAL, возвращаемый LocalAlloc
, который Marshal.AllocHGlobal
не предоставляет.
Я не обязательно ограничен использованием AllocHGlobal
;цель высокого уровня - позволить управляемому коду выделять память для неуправляемого кода, а затем читать и освобождать.