示例#1
0
        public override void Clear()
        {
            if (IsByteUniform(_defaultValue))
            {
                UnsafeUtil.setMemory(Address, LengthConflict * itemSize, _defaultValue[0]);
            }
            else
            {
                long intermediary = UnsafeUtil.allocateMemory(itemSize, AllocationTracker);
                for (int i = 0; i < _defaultValue.Length; i++)
                {
                    UnsafeUtil.putByte(intermediary + i, _defaultValue[i]);
                }

                for (long i = 0, adr = Address; i < LengthConflict; i++, adr += itemSize)
                {
                    UnsafeUtil.copyMemory(intermediary, adr, itemSize);
                }
                UnsafeUtil.free(intermediary, itemSize, AllocationTracker);
            }
        }