Marshal.AllocHGlobal(Marshal.SizeOf(输入))错误

本文关键字:Marshal 错误 SizeOf AllocHGlobal 输入 | 更新日期: 2023-09-27 17:58:45

input600是一个长度为600的浮点数组。

IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(input600));

上述语句引发以下错误:

类型"System.Single[]"不能作为非托管结构封送;则不能计算出有意义的大小或偏移。

这句话有什么问题?

Marshal.AllocHGlobal(Marshal.SizeOf(输入))错误

来自Marshal.SizeOf(object):的文档

此方法接受结构的实例,该实例可以是引用类型或装箱值类型。布局必须是连续的或明确的

阵列不满足此要求。然而,您应该能够像这样计算空间需求,假设数组元素类型是具有所需布局的结构的基元:

IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(input600.GetType().GetElementType())*input600.Length);