C++动态二维数组释放时出错

2025-01-02 12:04:34
推荐回答(5个)
回答1:

你只声明了一个动态数组a[],而a[][]是在a[]里面的,占用的是a[]的内存,故最后只要释放a[]就行了。

回答2:

#include
using namespace std;

int main()
{
int m,n,i,j;
cout<<"m:"< cin>>m;
cout<<"n:"< cin>>n;
int** a;
a = new int*[m];
for(i=0; i a[i] = new int[n];
for(i=0; i {
for(j=0;j a[i][j] = i+j;
}
for(i=0;i {
for(j=0;j cout< }
for(j=0;j delete[] a[i];
delete[] a;
return 0;
}
for(i=0; i a[i] = new int[n];
这里分配了m个长度为n的数组。在释放的时候当然也必须释放这m个。所以是m而不是n。

回答3:

for(j=0;j delete[] a[i];
delete[] a;
这里你delete出错
应该是j如果你用jm,你就会数组访问出界,出界就直接导致后面delete[] a;
出错

回答4:

for(j=0;j delete[] a[i];

回答5:

for(j=0;jm
delete[] a[i];