我正在开发一个由C#(Xamarin)客户端使用的跨平台C ++库。
我的理解是,对于内存分配和来回传递,我有两个选择:
在我的非托管C ++代码中,使用CoTaskMemAlloc和SysAllocString进行分配,使用MarshalAs正确标记Interop Marshaler,以便运行时可以使用Marshal.FreeCoTaskMem()或Marshal.FreeBSTR()
删除内存如果分配的内存作为IntPtr返回,则托管代码必须手动解组指针,然后使用适当的Free方法释放内存。
OR
在托管代码中,使用Marshal.AllocCoTaskMem方法分配内存,将缓冲区传递给非托管C ++库,让它填充并返回,最后在托管代码中,使用Marshal.FreeCoTaskMem释放内存。
这适用于Windows操作系统,但由于我的C ++库必须是跨平台的,Android或iOS上的等效内存分配/解除分配机制是什么?
我的理解是在C ++中使用malloc是不可取的,因为实现可能会有所不同。
由于