我正在研究一个项目,我想到了:我有一个带有id的结构,里面有一个数组:
struct Str
{
public uint id;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] array;
}
然后我想用随机大小的数组分配它:
var rnd = new Random();
var str = new Str() { id = 1, array = new byte[rnd.Next(4)] };
int size = Marshal.SizeOf(str);
IntPtr p = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(str, p, true);
问题是结构总是随机的,问题必须是分配或其他东西。当数组大小不是4时,最后一行给出ArgumentException
。
请帮我看看如何做到这一点。感谢。