要在托管代码中分配内存,请使用:
IntPtr [] params_list_n = new IntPtr [5];
但对于非托管内存,我使用Marshal.AllocHGlobal
我不明白在这种情况下如何为数组分配内存。
理想情况下我想使用函数调用Marshal.GetNativeVariantForObject (o, params_list_n[i]);
对于数组的每个元素。
答案 0 :(得分:7)
使用Marshal.AllocHGlobal创建非托管内存很简单。
IntPtr pointer = Marshal.AllocHGlobal(1024);
如果您需要计算可以使用的空间量Marshal.SizeOf。
int size = Marshal.SizeOf(typeof(IntPtr));
IntPtr pointer = Marshal.AllocHGlobal(size);
您还需要在项目中启用unsafe code
才能运行。
Properties
。Build
标签。Allow unsafe code
。答案 1 :(得分:2)
数组将是指向元素的指针。你以同样的方式使用它:
IntPtr results = Marshal.AllocHGlobal(5 * IntPtr.Size);