如何定义具有动态大小数组的结构?
是不是?
struct MyStruc {
public int len;
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)]
public int buf[];
}
答案 0 :(得分:3)
假设您需要一个包含指向数组的指针的结构。
将指向数组的指针声明为IntPtr
,并使用Marshal.AllocHGlobal
,Marshal.Copy
等手动编组数组内容。
假设您需要一个可变大小的结构而不是包含指向该数组的指针的结构。
您无法使用p / invoke封送变量大小的结构。您至少有以下两个选项:
Marshal.AllocHGlobal
,Marshal.Copy
等手动编组结构