У меня есть какая-то структура, подобная этой
struct MyStruct
{
public int field1;
public int field2;
public int field3;
}
, и у меня есть указатель на массив этой структуры.Итак, мне нужно получить массив из этого указателя.Я пытался использовать Marshal.PtrToStructure, но у меня была ошибка чтения из памяти.Это мой метод:
public MyStruct[] GetArrayOfStruct(IntPtr pointerToStruct, int length)
{
var sizeInBytes = Marshal.SizeOf(typeof(TCnt));
MyStruct[] output = new MyStruct[length];
for (int i = 0; i < length; i++)
{
IntPtr p = new IntPtr((pointerToStruct.ToInt32() + i * sizeInBytes));
output[i] = (MyStruct)System.Runtime.InteropServices.Marshal.PtrToStructure(p, typeof(MyStruct));
}
return output;
}
Итак, что я делаю не так?