public static void FreeStatic(ref pointer.size data) { if (data.data != null) { Interlocked.Add(ref staticSize, -data.sizeValue); Marshal.FreeHGlobal((IntPtr)data.data); data.Null(); } }
/// <summary> /// 释放数据容器 /// </summary> public virtual void Close() { if (IsUnmanaged) { unmanaged.Free(ref data); IsUnmanaged = false; } length = 0; data.Null(); }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { if (currentFreeIndex != null) { Monitor.Enter(poolLock); pointer.size indexs = freeIndexs; pool = nullValue <valueType> .Array; poolIndex = 0; currentFreeIndex = null; endFreeIndex = null; freeIndexs.Null(); Monitor.Exit(poolLock); unmanaged.Free(ref indexs); } }