生手送分,二维数组动态内存初始化,delete出错求解
新手送分,二维数组动态内存初始化,delete出错求解
请问为什么释放内存的时候出错了,求大侠解答更正程序!
------解决方案--------------------
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] 就可以了
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] 就可以了