Marshal.StructureToPtr терпит неудачу с bool и массивом фиксированного размера?
Если я соберу эту структуру с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);
}
}
}