с управляемой памятью

я есть такая структура

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;
}

Итак, что я делаю не так?

Ответы на вопрос(3)

Ваш ответ на вопрос