c#marshal struct,具有未知长度的数组

时间:2014-06-16 20:54:32

标签: c# arrays struct marshalling

我正在研究一个项目,我想到了:我有一个带有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

请帮我看看如何做到这一点。感谢。

0 个答案:

没有答案
相关问题