例如,是此 struct 的未管理内存布局:
public struct MyStruct<T>
where T: unmanaged
{
public T pointer;
}
和普通的T
一样吗?
另外,当他们拨打Marshal.PtrToStructure
和Marshal.StructureToPtr
时,他们的行为是否相同?
就是这样行得通吗?
MyStruct<int> myStruct;
IntPtr pointer = Marshal.AllocHGlobal(Marshal.SizeOf(MyStruct<int>));
Marshal.StructureToPtr(myStruct, pointer, false);
int myStructField = Marshal.PtrToStructure<int>(pointer);