Arrays Seg故障动态分配2d阵列
我有一个家庭作业,我必须动态分配一个2d数组,当我的数组又长又细(如2x8)时,我会出现seg错误,而问题只会在数组中存在某些值时出现。这是我创建数组然后删除它的代码Arrays Seg故障动态分配2d阵列,arrays,pointers,segmentation-fault,2d,dynamic-allocation,Arrays,Pointers,Segmentation Fault,2d,Dynamic Allocation,我有一个家庭作业,我必须动态分配一个2d数组,当我的数组又长又细(如2x8)时,我会出现seg错误,而问题只会在数组中存在某些值时出现。这是我创建数组然后删除它的代码 int main() { int **p; int w, h; cin >> w >> h; p= new int *[w]; for (int k=0; k<w; k++) p[k]= new int[h]; for (int i=0; i<h; i++)
int main()
{
int **p;
int w, h;
cin >> w >> h;
p= new int *[w];
for (int k=0; k<w; k++)
p[k]= new int[h];
for (int i=0; i<h; i++)
{
for(int k=0; k<w; k++)
{
cin >> p[i][k];
}
}
for (int k=0; k < w; k++)
delete []p[k];
delete []p;
return 0;
}
example input that causes seg fault:
8 2
5 4 2 3 0 1 2 5
2 0 1 0 9 6 3 2
intmain()
{
int**p;
int w,h;
cin>>w>>h;
p=新整数*[w];
对于(int k=0;k您混淆了索引。您分配w
指针,但您的循环通过h
元素运行i
。用于分配值的循环的边界已交换
p
被赋予一个长度为w
的数组,但随后使用循环到h
的迭代器i
对其进行索引
p= new int *[w];
....
cin >> p[i][k];
p[i][k]
被读取为p[i]
,然后被[k]
索引