Gerenciamento de memória na alocação de matriz 2-D

Eu aloquei uma matriz bidimensional usando o seguinte código:

// Dynamic allocation
        int **matrix=new int*[n];
        for(int i=0;i<n;i++)
        {
            matrix[i]=new int[n];
        }

Isso funciona bem.

Primeiro, alocamos uma matriz de ponteiros inteiros.Em seguida, alocamos cada um dos ponteiros anteriores para apontar para um local de memória den inteiros. Isso cria nossa matriz bidimensional.

Eu sei que um destruidor para uma matriz alocada dinamicamente deve se parecer com:

~SquareMatrix()
{
delete [] OneDarray;
}

A ênfase está em[] porque se não for gravado, somente o primeiro elemento da matriz será excluído.

Por motivos semelhantes, acho que preciso colocar o[] duas vezes para excluir toda a matriz bidimensional, como,

delete [] [] matrix;

Mas isso não está funcionando e está dando um erro de tempo de compilação.

Qual é a maneira correta de fazer isso?

questionAnswers(2)

yourAnswerToTheQuestion