(Array arr, Type arrayType)
| 101 | public ManagedArray(Array arr, Type elementType) => WrapArray(arr, elementType); |
| 102 | |
| 103 | internal void WrapArray(Array arr, Type arrayType) |
| 104 | { |
| 105 | if (_unmanagedData != IntPtr.Zero) |
| 106 | NativeInterop.NativeFree(_unmanagedData.ToPointer()); |
| 107 | if (_managedHandle.IsAllocated) |
| 108 | _managedHandle.Free(); |
| 109 | _managedHandle = ManagedHandle.Alloc(arr, GCHandleType.Pinned); |
| 110 | _unmanagedData = Marshal.UnsafeAddrOfPinnedArrayElement(arr, 0); |
| 111 | _unmanagedAllocationSize = 0; |
| 112 | _length = arr.Length; |
| 113 | _arrayType = arrayType; |
| 114 | _elementType = arr.GetType().GetElementType(); |
| 115 | _elementSize = NativeInterop.GetTypeSize(_elementType); |
| 116 | } |
| 117 | |
| 118 | internal void Allocate<T>(int length) where T : unmanaged |
| 119 | { |
no test coverage detected