예제 #1
0
 private void Deallocate(void *pointer)
 {
     MemoryHeap.Free(pointer);
     m_totalBuffers--;
     m_totalMemory -= m_settings.BufferSize;
     GC.RemoveMemoryPressure(m_settings.BufferSize);
 }
예제 #2
0
 protected override void Dispose(bool disposing)
 {
     while (m_buffers.Count > 0)
     {
         void *ptr = m_buffers.Pop();
         if (ptr != null)
         {
             MemoryHeap.Free(ptr);
         }
     }
     GC.RemoveMemoryPressure(m_totalMemory);
 }
예제 #3
0
        private void Allocate(int bufferSize, int numOfBuffers)
        {
            for (int i = 0; i < numOfBuffers; i++)
            {
                void *buffer = MemoryHeap.Alloc(bufferSize);
                m_buffers.Push(buffer);
            }

            int allocatedBytes = bufferSize * numOfBuffers;

            m_totalMemory  += allocatedBytes;
            m_totalBuffers += numOfBuffers;
            GC.AddMemoryPressure(allocatedBytes);
        }