Mix*_*xer 5 c# arrays memory-management intptr alloc
要在托管代码中分配内存,我使用:
IntPtr [] params_list_n = new IntPtr [5];
Run Code Online (Sandbox Code Playgroud)
但是对于非托管内存我使用Marshal.AllocHGlobal
而且我不明白在这种情况下如何为数组分配内存.
理想情况下,我想使用函数调用Marshal.GetNativeVariantForObject (o, params_list_n[i]);
对于数组的每个元素.
使用Marshal.AllocHGlobal创建非托管内存非常简单.
IntPtr pointer = Marshal.AllocHGlobal(1024);
Run Code Online (Sandbox Code Playgroud)
如果您需要计算空间量,可以使用Marshal.SizeOf.
int size = Marshal.SizeOf(typeof(IntPtr));
IntPtr pointer = Marshal.AllocHGlobal(size);
Run Code Online (Sandbox Code Playgroud)
您还需要unsafe code在项目中启用此功能.
Properties.Build选项卡.Allow unsafe code.