二维数组分割错误
Segmentation fault two dimensional array
我是编程新手,我正在努力理解二维数组。我写这段代码只是为了测试我的代码,看看它是否有效。不幸的是,我得到了一个分割错误。我知道这意味着我写的东西对编译器来说是不可读的,但我不知道它是什么。因为对我来说一切都很好。
#include<iostream>
using namespace std;
int main(){
int col, row,i;
int **array;
cout << "How many rows?n";
cin >> row;
cout << "How many colomnsn";
cin >> col;
cout << "!!!!!!!!!!!!";
array = new int*[row];
for (int i = 0;i<row;i++){
array[i] = new int[col];
}
cout << "!!!!!!!!!!!!";
for( i=0; i<row; i++){
int x=1;
array[0][i]= x;;
x++;
}
cout << "!!!!!!!!!!!!";
cout << array[row][col];
for(i=0; i<row; i++){
delete [] array[i];
delete [] array;
}
return 0;
}
错误为:"有多少行?3.多少科隆3.分段故障(堆芯倾倒)"
array[0][i]= x;
看起来不对。应该是:
array[i][0]= x;
第一个索引用于行,第二个索引用于列。
随后的CCD_ 2也由于CCD_。
删除数组的方式也是错误的,应该是:
for(i=row - 1; i >= 0; --i){
delete [] array[i];
}
delete [] array;
cout << array[row][col];
正如其他人所说,在两个维度中的每一个维度都超出了范围。
for(i=0; i<row; i++){
delete [] array[i];
delete [] array;
}
您要删除数组的元素三次,每个元素一次。这很好。您还将删除数组本身三次。这是危险和错误的。
所以它应该是这样的?
#include<iostream>
using namespace std;
int main(){
int col, row,i;
int **array;
cout << "How many rows?n";
cin >> row;
cout << "How many colomnsn";
cin >> col;
array = new int*[row];
for (int i = 0;i<row;i++){
array[i] = new int[col];
}
cout << "!!!!!!!!!!!!";
for( i=0; i<row; i++){
int x=1;
array[i][0]= x;;
x++;
}
cout << "!!!!!!!!!!!!";
for(i=0; i<row; i++){
for(int j=0; j<col; j++){
array[i][j];
}
}
cout << array[row][col];
for(i=0; i<row; i++){
delete [] array[i];
delete [] array;
}
return 0;
}
此行超出范围cout << array[row][col];
。如果要打印最后一个元素,请将此行更改为cout << array[row-1][col-1];
正如其他人提到的,下面是删除分配的内存的代码
for(i=0; i <row; i++){
delete [] array[i];
}
delete [] array;
同样,在您的代码中,x
总是1
,x++
是无效的。
for( i=0; i<row; i++){
int x=1;
array[0][i]= x;
x++;
}
如果要为每行递增x
,则在循环外初始化x
像这个
int x=1;
for( i=0; i<row; i++){
array[0][i]= x;;
x++;
}
相关文章:
- C++映射分割错误(核心转储)
- 由cin中的字符串中未捕获空白引起的分割错误
- 删除映射和分割错误中的一个过去结束元素
- 在指向函数中读取变量时出现分割错误
- 在链表中的第 n 位插入显示分割错误
- 较高值 n 的分割错误(例如 n=999997)
- 尝试通过memcpy复制大尺寸浮点向量时的分割错误
- 分割错误:向量中的擦除功能
- 向量向量的分割错误
- 我在C++中编写了一个方法来打印树类的预序,但它显示了分割错误
- C ++分割错误,为什么使用"long long"我没有得到答案?
- 在尝试使用递归查找集合子集的总数时,我遇到了分割错误
- 分割错误 11:尝试使用 cin 输入 B[1] 时
- 集合布局上的 Qt 分割错误
- 高达20亿的筛子会产生分割错误
- G :内部编译器错误:分割故障(程序CC1PLUS) - 我在哪里开始
- 二进制搜索树操作程序错误:分割故障(核心倾倒)
- 在给出正确的输出后,给出错误分割错误(核心转储)
- 得到错误分割错误(核心转储)进程返回139 (0x8B)
- 内部编译错误:分割错误在gcc.发送可变模板到struct时