public IntPtr ManagedToNativeAllocInlistNode(T man) { var node = new InlistNode <IntPtr>(); node.Val = ManagedToNativeAlloc(man); GCHandle pinnedData = GCHandle.Alloc(node, GCHandleType.Pinned); IntPtr ptr = pinnedData.AddrOfPinnedObject(); IntPtr nat = MemoryNative.AllocCopy(ptr, Marshal.SizeOf <InlistMem>() + Marshal.SizeOf <IntPtr>()); pinnedData.Free(); return(nat); }