全局向量导致 C++ 程序结束时出现段错误
Global vector causing a segfault at end of c++ program
该程序在最后打印出"bye",然后打印出段错误。我不知道为什么。我认为这可能与全球向量有关?我玩过它,发现如果我拿走 cout <<i,j 和 cout <<endl,它会在不打印任何东西的情况下出现段错误。n,p,k和T不是很大,最多30个。
int n, p, k;
vector<vector<int>> plates;
int main() {
int T;
cin >> T;
for (int t = 1; t != 1 + T; ++t) {
cin >> n >> k >> p;
plates.resize(n + 1, vector<int>(k + 1, 0));
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= k; ++j) {
cin >> plates[i][j];
cout << i << "," << j << "t";
}
cout << endl;
}
}
cout << "bye" << endl;
}
plates.resize(n + 1, vector<int>(k + 1, 0));
resize()
不会做你认为它做的事情。resize()
不会在此处将调整大小的向量中的每个值都设置为第二个参数。只有向量中的新值(如果它增长(才会设置为此值。
因此,如果在第一次通过外循环时,向量是 2 行乘 2 列,第二次通过外循环时,维度被指定为 50x50,这将向plates
添加 48 个值,每个值都是具有 50 个值的向量。
但是plates
向量中的前两个值保持不变,它们在其中保留了原始的双值向量。
解决方案似乎很明显:在此resize()
之前添加plates.clear()
。
相关文章:
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 如何摆脱C ++中的分段错误错误?
- Clang 8 带有静态 constexpr 和数组的链接器错误 - 错误是什么以及如何解决它?
- 为什么每当我尝试运行此链接列表删除功能时都会收到分段错误错误?
- 如何解决分段错误错误C++
- 作为参数模板的模板类:MSVC 错误 - 错误 C2977:模板参数过多 (C++98)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- 卷曲给出分段错误错误
- 无法访问 Arduino 结构字段。错误"退出状态 1。xxxx 不命名类型"
- 错误错误 C2872:"布尔值":kinect.h 的不明确符号
- C++打印模板容器错误(错误:"运算符<<"的不明确重载)理解?
- 结构的分割错误错误
- 为什么此代码返回分段错误错误?
- 错误错误:无法编译内置功能
- 分段错误错误C++
- C++ 1Z 错误:错误:演绎指南中声明中的显式限定
- 使用对数据类型的向量的哈希表中的分段错误错误
- 为什么此代码会导致分段错误错误
- JNA结构字段值错误
- C++段故障错误