怎么删除动态申请的二维字符串数组

如何删除动态申请的二维字符串数组?
如题,我用如下代码申请后,不知道如何删除:
char **p;
int r = 10000;//暂定10000行
int c = 100;//暂定100列
p = new char*[r];//创建一个动态 char* 型数组  
for (int i = 0; i < c; ++i)
p[i] = new char[c]; //再创建一个动态 char 型数组

如何使用delete安全删除。
------解决思路----------------------

for (int i = 0; i < c; ++i)
 delete[] p[i]; //// = new char[c]; //再创建一个动态 char 型数组

delete[] p; //// = new char*[r];//创建一个动态 char* 型数组  
------解决思路----------------------


har **p;
int r = 10000;//暂定10000行
int c = 100;//暂定100列
p = new char*[r];//创建一个动态 char* 型数组  
for (int i = 0; i < c; ++i)
p[i] = new char[c]; //再创建一个动态 char 型数组

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