コード例 #1
0
 static void OverRelease(OwnedBuffer <byte> buffer)
 {
     Assert.ThrowsAny <InvalidOperationException>(() =>
     {
         buffer.Release();
     });
 }
コード例 #2
0
        static void MemoryHandleDoubleFree(OwnedBuffer <byte> buffer)
        {
            var memory = buffer.Buffer;
            var handle = memory.Retain(pin: true);

            buffer.Retain();
            handle.Dispose();
            handle.Dispose();
            Assert.False(buffer.Release());
        }
コード例 #3
0
ファイル: BufferSegment.cs プロジェクト: nietras/corefxlab
        public void Dispose()
        {
            Debug.Assert(_owned.HasOutstandingReferences);

            _owned.Release();

            if (!_owned.HasOutstandingReferences)
            {
                _owned.Dispose();
            }
        }
コード例 #4
0
        public void Dispose()
        {
            Debug.Assert(_owned.IsRetained);

            _owned.Release();

            if (!_owned.IsRetained)
            {
                _owned.Dispose();
            }
        }
コード例 #5
0
        static void MemoryHandleDoubleFree(OwnedBuffer <byte> buffer)
        {
            var memory = buffer.Buffer;
            var h      = memory.Pin();

            Assert.True(buffer.IsRetained);
            buffer.Retain();
            Assert.True(buffer.IsRetained);
            h.Dispose();
            Assert.True(buffer.IsRetained);
            h.Dispose();
            Assert.True(buffer.IsRetained);
            buffer.Release();
            Assert.False(buffer.IsRetained);
        }
コード例 #6
0
ファイル: MemoryTests.cs プロジェクト: nietras/corefxlab
        public void MemoryHandleDoubleFree()
        {
            var array = new byte[1024];
            OwnedBuffer <byte> owned = array;
            var memory = owned.Buffer;
            var h      = memory.Pin();

            Assert.True(owned.HasOutstandingReferences);
            owned.AddReference();
            Assert.True(owned.HasOutstandingReferences);
            h.Free();
            Assert.True(owned.HasOutstandingReferences);
            h.Free();
            Assert.True(owned.HasOutstandingReferences);
            owned.Release();
            Assert.False(owned.HasOutstandingReferences);
        }
コード例 #7
0
        public void MemoryHandleDoubleFree()
        {
            var array = new byte[1024];
            OwnedBuffer <byte> owned = array;
            var memory = owned.Buffer;
            var h      = memory.Pin();

            Assert.True(owned.IsRetained);
            owned.Retain();
            Assert.True(owned.IsRetained);
            h.Dispose();
            Assert.True(owned.IsRetained);
            h.Dispose();
            Assert.True(owned.IsRetained);
            owned.Release();
            Assert.False(owned.IsRetained);
        }
コード例 #8
0
ファイル: MemoryPoolTests.cs プロジェクト: jkotas/corefxlab
        public void ReleasedBlockWorks()
        {
            using (var pool = new MemoryPool())
            {
                var block1 = pool.Rent(1);
                block1.Retain();
                block1.Release();

                OwnedBuffer <byte> block2 = null;

                // Lease-return until we get same block
                while (block1 != block2)
                {
                    block2 = pool.Rent(1);
                    block2.Retain();
                    block2.Release();
                }

                Assert.True(block2.AsSpan().Length > 0);
            }
        }
コード例 #9
0
ファイル: BufferSegment.cs プロジェクト: jkotas/corefxlab
 public void Dispose()
 {
     _owned.Release();
 }
コード例 #10
0
ファイル: RentedBufferStream.cs プロジェクト: mindis/Spreads
 protected override void Dispose(bool disposing)
 {
     _rentedBuffer.Release();
     //_rentedBuffer.Dispose();
     base.Dispose(disposing);
 }