示例#1
0
 public static void Free(UnmanagedMemoryPool *pool, void *ptr)
 {
     if (ptr != null)
     {
         void **pHead = (void **)ptr;
         *      pHead = pool->Free;
         pool->Free = pHead;
     }
 }
示例#2
0
        public static void FreeAll(UnmanagedMemoryPool *pool)
        {
            void **pCur  = (void **)pool->Alloc;
            byte * pNext = pool->Alloc + pool->BlockSize;

            for (int i = 0, count = pool->NumBlocks - 1; i < count; ++i)
            {
                *pCur = pNext;
                pCur   = (void **)pNext;
                pNext += pool->BlockSize;
            }

            *pCur = default(void *);

            pool->Free = pool->Alloc;
        }
示例#3
0
 public static void FreePool(UnmanagedMemoryPool *pool)
 {
     Free((IntPtr)pool->Alloc);
     pool->Alloc = null;
     pool->Free  = null;
 }