I'm writing my own array sorting method and I have created a duplicate array to stored the objects as they are stored. The arrays are both arrays of pointers and so I need to delete my temporary array without deleting the items it points to. In the code snippet below I am leaking memory as I either delete all the items or do not delete anything.
//In constructor initialiser list
m_listArray( new PathFindingTile*[maxSize] )
void sort()
{
    auto** sorted = new PathFindingTile*[m_size];
    sorted[0] = m_listArray[0];
    for (int i = 1; i < m_size; i++)
    {
        sorted[i] = m_listArray[i];
        for (int j = i; j - 1 >= 0; j--)
        {
            if (*m_listArray[j] < *m_listArray[j - 1])
            {
                PathFindingTile* temp = sorted[j - 1];
                sorted[j - 1] = m_listArray[i];
                sorted[j] = temp;
            }
            else
            {
                sorted[i] = m_listArray[i];
                break;
            }
        }
    }
    m_listArray = sorted;
    //Both 'delete sorted' and 'delete[] sorted' delete the contents of sorted, but I'd only like to delete the array pointer
    delete sorted;
}
How can I transfer the duplicated list back to the original list without leaking memory?
 
     
    