示例#1
0
        /// <summary>
        /// Restore memory storage position
        /// </summary>
        /// <param name="storage"></param>
        /// <param name="pos"></param>
        public static void RestoreMemStoragePos(MemStorage* storage, MemStoragePos* pos)
        {
            if (storage == null || pos == null) return;

            if (pos->FreeSpace > storage->BlockSize) throw new Exception("bad size");

            storage->Top = pos->Top;
            storage->FreeSpace = pos->FreeSpace;

            if (storage->Top == null)
            {
                storage->Top = storage->Bottom;
                storage->FreeSpace = (storage->Top != null) ? storage->BlockSize - sizeof(MemBlock) : 0;
            }
        }
示例#2
0
        /* Remember memory storage position: */
        public static void SaveMemStoragePos(MemStorage* storage, MemStoragePos* pos)
        {
            if (storage == null || pos == null) return;

            pos->Top = storage->Top;
            pos->FreeSpace = storage->FreeSpace;
        }