Если я маршалирую эту структуру с помощью StructureToPtr
, а затем демаршалирую ее снова с помощью PtrToStructure
, мой первый узел будет иметь y = {1,2}, в то время как у моего второго узла y = {1,0}.
Понятия не имею, почему, возможно, моя структура в чем-то плохая? Удаление bool
из структуры заставляет ее работать.
using System;
using System.Runtime.InteropServices;
namespace csharp_test
{
unsafe class Program
{
[StructLayout(LayoutKind.Sequential)]
public struct Node
{
public bool boolVar;
public fixed int y[2];
}
unsafe static void Main(string[] args)
{
Node node = new Node();
node.y[0] = 1;
node.y[1] = 2;
node.boolVar = true;
int size = sizeof(Node);
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(node, ptr, false);
Node node2 = (Node)Marshal.PtrToStructure(ptr, typeof(Node));
Marshal.FreeHGlobal(ptr);
}
}
}