예제 #1
0
    public void Allocate(int sz)
    {
        if (buffer != null && bufferLength >= sz)
        {
            return;
        }
        T[] newList = null;

        newList = HeapPoolEx.NewArrayToLarger <T>(sz);


        if (buffer != null && size > 0)
        {
            buffer.CopyTo(newList, 0);
        }

        T[] oldBuffer = buffer;
        if (oldBuffer != null)
        {
            HeapPoolEx.DeleteArray <T>(ref oldBuffer);
        }

        buffer       = newList;
        bufferLength = buffer.Length;
    }
예제 #2
0
    /// <summary>
    /// Clear the array by resetting its size to zero. Note that the memory is not actually released.
    /// </summary>
    public void Clear()
    {
        size = 0;

        if (buffer != null)
        {
            HeapPoolEx.DeleteArray <T>(ref buffer);
            buffer = null;
        }
        bufferLength = 0;
    }