Exemple #1
0
        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
        }
Exemple #2
0
        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
        }