我有以下數據結構的聲明上,我做如下操作:總線錯誤/分段過錯的std ::矢量<int>聲明
//QSweep.cpp
void QSweep:: createLoops(){
std:: vector<int> orientationUE;
if (test1)
orientationUE.push_back(1);
else
orientationUE.push_back(-1);
一切工作正常爲止。 的問題是,我有幾個文件,我想orientationUE是類QSweep不僅在方法createLoops一個局部變量()的數據。 所以我添加變量orientationUE的聲明文件中QSweep.h
//QSweep.h
class QSweep{
....
std::vector<int> orientationUE;
....
}
//QSweep.cpp
void QSweep:: createLoops(){
if (test1)
orientationUE.push_back(1);
else
orientationUE.push_back(-1);
}
在這種情況下,我獲得任何總線錯誤消息或分段錯誤消息不同的地方,我宣佈我在
變量orientationUEclass QSwepp{
....
}
我不明白到底發生了什麼。
地址: 是的,我有幾個內存分配和類型矢量的變量其他幾個聲明(其實很多)。例如: -
typedef Seq< vector<int> > MxInt2d;
class QSweep
{
public:
QSweep(){};
QSweep(const MxDouble2d& myPoints, const MxInt2d& myEdges);
void intersection();
//data and functions for inserting the missing edges in the graph
void completeGraph();
MxInt2d myEFCG;
std::vector<int> vNoClone;
std::vector<int> vEdge;
....
int nbIntersections;
MxInt2d sweepEvents;
std::vector<double*> myIntersections;
};
不過我對這些數據類型應用了很多算法和我沒有任何段故障或總線錯誤信息的結果。 所以你認爲這個錯誤是在其他內存分配工作中的某個地方。 Uff .. 我很害怕那個。儘管如此,我仍然不明白這些好的結果,但它們有誤導性?我怎麼能在這種情況下準確地檢測到錯誤?
ADD_NEXT:
矢量myIntersections通過以下方式創建:
double* QSweep::computeIntersection(double m1, double b1, double m2, double b2){
double* v=new double[3];
v[0]= (b2-b1)/(m1-m2);
v[1]= (m1*b2-m2*b1)/(m1-m2);
v[2]=0.00;
return v;
}
double* QSweepComplete::findIntersection(edge_t edge1, edge_t edge2){
double* vector=NULL;
if (test2){
return NULL;
}
else{
vector=computeIntersection(m1,b1,m2,b2);
return vector;
}
}
void QSweep:: intersection(){
double* vector=NULL;
vector=findIntersection(edge1,edge2);
if (vector!=NULL){
myIntersections.push_back(vector);
}
}
當我顯示矢量myIntersections一切都沒問題,加上我總能得到正確的大小:如果我有5交叉點,向量中的5個元素等等。 對我來說,它看起來很乾淨,但不幸的是可能它不是:(
ADD_LAST(也許解決): 嘿,大家
看來問題是數據
int nbIntersections;
這我只是初始化它當地在QSweep.cpp功能; 不過,我使用了很多與nbIntersections同樣大小的矢量,所以在某些情況下,該變量包含了一些不存在的數據 所以我加入到構造並初始化。它與0,現在它eems我再也不會遇到分段錯誤或總線錯誤消息的問題。 我希望這是錯誤的。
您能否提供更多關於此句子的信息:「根據我聲明的變量方向,我獲得了總線錯誤消息還是分段錯誤消息」?否則,我沒有看到代碼有任何問題。 – Naveen 2009-06-15 10:01:14
如何使用myIntersections?元素是否指向另一個向量中的雙倍? – 2009-06-15 10:52:08