生手送分,二维数组动态内存初始化,delete出错求解

新手送分,二维数组动态内存初始化,delete出错求解

void test10(void){
cout<<"Enter number :";
int n;
cin>>n;
        int **pf=new int* [n];
for(int i=0;i<n;i++){
pf[i]=new int[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
pf[i][j]='.';
cout<<(char)pf[i][j]<<"\t";
}
cout<<endl;
}
        //调试到这里出错
for(int i=0;i<n;i++)
delete [] pf[i];
delete [] pf;
}

请问为什么释放内存的时候出错了,求大侠解答更正程序!
C++

------解决方案--------------------
pf[i]=new int[i];   比如i=0,pf[0]有0个元素, pf[1] 有1个元素。但是你下面
for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            pf[i][j]='.';
            cout<<(char)pf[i][j]<<"\t";
        }
        cout<<endl;
    }
都是按pf[0]有n个元素来使用的。 当你释放pf[0]时 它没有分配空间 。
pf[i]=new int[n]  就可以了