Bonsoir,
Suite a differrente remarque je me suis mis a la STL et je trouve ca pas mal du tout
J'ai donc voulu convertir mon code afin de prendre possesion des avantages de la STL.
Malheureusement... je me vois dans l'incapacitee de debugueer le probleme ici present. L'erreur est un classic "Segmentation fault" et voici une partie de la trace effectuee avec gdb :
fillBin (tabBin=0x80c381c, tabSeg=0x80bbe30, tabVertices=0x80bc0c0, nbSeg=162) at visual12.cpp:1393
1393 if(nbDelList<2) // if(delList is not Full)
1: *iter = (Line *&) @0x80bb740: 0x80bf910
(gdb) next
1395 cout<<(*iter)<<"** added to delList["<<nbDelList<<"]."<<endl<<endl;
1: *iter = (Line *&) @0x80bb740: 0x80bf910
(gdb) next
0x80bf910** added to delList[0].
1396 delList[nbDelList]=(*iter);
1: *iter = (Line *&) @0x80bb740: 0x80bf910
(gdb) next
1397 if((*iter)->getActivity()==true)
1: *iter = (Line *&) @0x80bb740: 0x80bf910
(gdb) next
1399 (*iter)->setActivity(false);
1: *iter = (Line *&) @0x80bb740: 0x80bf910
(gdb) next
1400 workingSegments.erase(iter);
1: *iter = (Line *&) @0x80bb740: 0x80bf910
(gdb) next
1401 numWorkingSegments--;
1: *iter = (Line *&) @0x80bb740: 0x80bf910
(gdb) next
1403 nbDelList++;
1: *iter = (Line *&) @0x80bb740: 0x80bf910
(gdb) next
1388 for(iter=workingSegments.begin(); iter!= workingSegments.end(); ++iter)
1: *iter = (Line *&) @0x80bb740: 0x80bf910
(gdb) next
1390 cout<<"Vertices : "<<(*iter)->getPtIni()<<" and "<<(*iter)->getPtFin()<<" belong to WorkingSegment : "<<*iter<<endl;
1: *iter = Disabling display 1 to avoid infinite recursion.
(Line *&) @0x8: Cannot access memory at address 0x8
Voici le code en question :
Pourquoi donc il n'arrive pas a acceder a la memoire ??? Je suppose que cela vient de l'iterator.. mais ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 if(iVertices>0) { cout<<"Current Vertices : "<<vCurrent<<"and alpha = "<<vCurrent->getAngle()<<endl; for(iter=workingSegments.begin(); iter!= workingSegments.end(); ++iter) { cout<<"Vertices : "<<(*iter)->getPtIni()<<" and "<<(*iter)->getPtFin()<<" belong to WorkingSegment : "<<*iter<<endl; if(((*iter)->getPtIni()==vCurrent) || ((*iter)->getPtFin()==vCurrent)) { if(nbDelList<2) // if(delList is not Full) { cout<<(*iter)<<"** added to delList["<<nbDelList<<"]."<<endl<<endl; delList[nbDelList]=(*iter); if((*iter)->getActivity()==true) { (*iter)->setActivity(false); workingSegments.erase(iter); numWorkingSegments--; } nbDelList++; } } }
Merci encore !
Partager