【发布时间】:2013-04-24 08:00:35
【问题描述】:
我正在使用 3D 矢量,一切都很完美。当我添加并使用 ofstream 文件时,出现了分段错误。 我根本不明白这个问题。 以下代码不起作用:
#include <iostream>
#include <vector>
#include <fstream>
std::vector < std::vector < std::vector <float> > > hand;
int main(){
//First Part
std::ofstream file;
file.open("test.csv");
file << "Hello World!";
file.close();
//Second Part
hand.reserve(20);
for (int i=0; i<hand.capacity(); i++){
hand[i].reserve(4);
}
return 0;
}
如果您注释其中一个部分,代码将完美运行。当您想同时使用它们时会出现分段错误。
同样重要的是要注意代码可以在以下情况下运行:
hand.reserve(20);
我们使用低于 8 的数字:
hand.reserve(7); //or lower
我的问题是:为什么我同时使用它们时代码不起作用?我能做些什么来修复它?你对这个特殊情况有什么解释吗?
我必须在更大的代码中实现这一点,所以最好知道根本原因并在接下来的情况下避免它。
【问题讨论】:
-
您是否调试过您的应用程序并寻找任何 0 值?
标签: c++ vector segmentation-fault fstream ostream