C++使用delete函数,程序总是出错
#include<cstdio>usingnamespacestd;intmain(){intn,m;int**mark=newint*[1010];for(inti=0...
#include <cstdio>
using namespace std;
int main()
{
int n,m;
int **mark=new int* [1010];
for(int i=0;i<1010;i++)
*mark=new int [1010];
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&mark[i][j]);
for(int i=0;i<n;i++)
for(int j=0;j<)
for(int i=0;i<1010;i++)
delete []mark[i];
delete [] mark;
return 0;
} 展开
using namespace std;
int main()
{
int n,m;
int **mark=new int* [1010];
for(int i=0;i<1010;i++)
*mark=new int [1010];
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&mark[i][j]);
for(int i=0;i<n;i++)
for(int j=0;j<)
for(int i=0;i<1010;i++)
delete []mark[i];
delete [] mark;
return 0;
} 展开
4个回答
展开全部
#include <cstdio>
#define N 1010
using namespace std;
int main()
{
int n,m;
int **mark=new int* [N];
for(int i=0;i<N;i++)
*mark=new int [N];
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&mark[i][j]);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
delete []mark[i];
delete [] mark;
return 0;
}
这样就可以了哈~,
展开全部
第一个for下面应该写:mark[i] = new int[1010];
#include <cstdio>
using namespace std;
int main()
{
int n,m;
int **mark=new int* [1010];
for(int i=0;i<1010;i++)
mark[i] = new int[1010];
// *mark=new int [1010];
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&mark[i][j]);
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++)
printf("%5d ", mark[i][j]);
printf("\n");
}
for(int i=0;i<1010;i++)
delete []mark[i];
delete [] mark;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
delete不是干这个的,虽然你用了new创建动态数组,delete []mark[i];这个语句无法删除该数组里特定的元素,delete干不了这个,只能delete [] mark;这样删除整个数组,如果想删除数组里特定的元素,只能让后面的元素顶上来,用循环或递归实现吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先是先new的后delete,后new的先delete;
其次对于指针数组,应该是delete []mark;
所以我觉得应该是delete mark;再delete []mark;没必要那个循环吧
其次对于指针数组,应该是delete []mark;
所以我觉得应该是delete mark;再delete []mark;没必要那个循环吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询