【发布时间】:2011-11-23 13:21:38
【问题描述】:
我写了这个程序:
#include <sstream>
#include <math.h>
#include <string>
#include <vector>
using namespace std;
double distance(vector<double> *, vector<double> *, int);
const char* distances(vector<vector<double>* >, int);
double distance(vector<double> a, vector<double> b){
double result = 0, di;
for(int i=0;i<a.size();i++){
di = a[i] - b[i];
result += di*di;
}
return sqrt(result);
}
const char* distances(vector<vector<double>* > vectors, int accuracy=1){
stringstream graphstr;
graphstr << "strict graph {\n";
for(int i=0; i<vectors.size();i++){
int j=i+1;
while(j<vectors.size()){
graphstr << "\t" << i << " -- " << j << "\t [len=" << distance(vectors[i],vectors[j]) << "];\n";
j+=accuracy;
}
}
graphstr << "}\n";
return graphstr.str().c_str();
}
当vectors.size() 大于 70 时,它会给我一个分段错误。有什么问题?
当我不向graphstr 添加新的刺时,没关系。
【问题讨论】:
-
您是否尝试在启用所有警告和调试信息的情况下编译您的代码(即 Linux 上的
g++ -Wall -g)?然后在其上使用调试器(即gdb或其dddLinux 上的 GUI 前端)!
标签: c++ segmentation-fault stringstream