1

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

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

上述语句引发以下错误:

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

这个说法有什么问题?

4

1 回答 1

0

从以下文档Marshal.SizeOf(object)

此方法接受结构的实例,该实例可以是引用类型或装箱值类型。布局必须是顺序的或显式的。

数组不满足这个要求。但是,您应该能够像这样计算空间需求,假设数组元素类型是具有所需布局的结构的原语:

IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(input600.GetType().GetElementType())*input600.Length);
于 2013-02-10T13:46:00.707 回答