input600
是一个长度为600的浮点数组。
IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(input600));
上述语句会引发以下错误:
类型'System.Single []'不能作为非托管结构封送; 没有有意义的大小或偏移量可以计算出来。
这句话有什么问题?
答案 0 :(得分:0)
来自Marshal.SizeOf(object)
的文档:
此方法接受结构的实例,可以是a 引用类型或盒装值类型。布局必须是顺序或 明确的。
阵列不符合此要求。但是,您应该能够像这样计算空间要求,假设数组元素类型是具有所需布局的结构的基元:
IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(input600.GetType().GetElementType())*input600.Length);