数组内存释放问题
int ia[3][4]={{0,0,0,0},{1,1,1,1},{4,4,4,4}};int **pia=new int*[3];for(int **ix=pia,i=0;ix!=pia+3;++ix,++i){ *ix=new int[4]; for(int *p=*ix,j=0;p!=*ix+4;++p,++j) { *p=ia[i][j]; }}for(int **ix=pia;ix!=pia+3;++ix){ for(int *i=*ix;i!=*ix+4;++i) cout<<*i<<endl;}for(int **p=pia;p!=pia+3;p++) delete [] *p; for(int **ix=pia;ix!=pia+3;++ix){ for(int *i=*ix;i!=*ix+4;++i) cout<<*i<<endl;}delete [] pia;000011114444-17891602-17891602-17891602-17891602-17891602-17891602-17891602-17891602-17891602-17891602-17891602-17891602
[解决办法]
仅供参考
//在堆中开辟一个4×5的二维int数组#include <stdio.h>#include <malloc.h>int **p;int i,j;void main() { p=(int **)malloc(4*sizeof(int *)); if (NULL==p) return; for (i=0;i<4;i++) { p[i]=(int *)malloc(5*sizeof(int)); if (NULL==p[i]) return; } for (i=0;i<4;i++) { for (j=0;j<5;j++) { p[i][j]=i*5+j; } } for (i=0;i<4;i++) { for (j=0;j<5;j++) { printf(" %2d",p[i][j]); } printf("\n"); } for (i=0;i<4;i++) { free(p[i]); } free(p);}// 0 1 2 3 4// 5 6 7 8 9// 10 11 12 13 14// 15 16 17 18 19
[解决办法]