C++delete二重指针的问题

有一个这样的指针用来存储一个二维数组
int * a[][]=new int[10][10];
用delete[][] a这样的操作么?

二维数组需要分层申请和释放

代码:

#include

using namespace std;

int main(void)
{
int **p;

    p = new int*[3];

    for (int i = 0; i < 3; i++)
            p[i] = new int[4];

    for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 4; j++)
                    p[i][j] = i+j;
    }

    for (int i = 0; i < 3; i++)
            delete []p[i];

    delete []p;

    return 0;

}

参考这里面的5#代码. http://bbs.csdn.net/topics/391055200?page=1