internal RetainedMemory(RetainableMemory <T> memory, int start, int length, bool borrow) { if (memory.IsDisposed) { BuffersThrowHelper.ThrowDisposed <RetainableMemory <T> >(); } Debug.Assert(unchecked ((uint)start + (uint)length <= memory.Length)); if (borrow) { memory.Increment(); } _manager = memory; _start = start; _length = length; #if DETECT_LEAKS _finalizeChecker = new PanicOnFinalize(); #endif }
internal RetainedMemory(RetainableMemory <T> memory, int offset, int length, bool borrow) #endif { if (memory.IsDisposed) { BuffersThrowHelper.ThrowDisposed <RetainableMemory <T> >(); } Debug.Assert(unchecked ((uint)offset + (uint)length <= memory.Length)); if (borrow) { memory.Increment(); } _manager = memory; _offset = offset; _length = length; // We do not need to Pin arrays, they do not have ref count. Will be pinned when Pointer is accessed. #if DETECT_LEAKS _finalizeChecker = borrow ? new PanicOnFinalize() : checker; #endif }