View Full Version : Program Crash
jonmatteo
17th June 2009, 12:22
Hi all,
I have implemented a C++ function that uses a C library. I have no problem if i call it from main but when i call it whitin a QWidget the program crashes.
Any help?
Thanks
spirit
17th June 2009, 12:29
check line 45 in your source.
no, seriously provide more information and code.
jonmatteo
17th June 2009, 13:12
ok
the function i have to call il
void run()
{
MesDomain *domain;
domain=new MesDomain();
std::vector<MesPoint> p;
std::vector<MesEndPoints> s;
std::vector<MesPoint> v;
...
domain->setPolygon(p,s,h);
domain->computeQuadrangulation();
...
delete domain
}
here is class MesDomain
class MesDomain
{
private:
MesPolygon *polygon;
MesNodes *nodes;
MesEdges *edges;
MesElements *elements;
CQMesh *mesh;
public:
MesDomain();
~MesDomain();
void setPolygon(std::vector<MesPoint>, std::vector<MesEndPoints>, std::vector<MesPoint> );
void computeQuadrangulation();
void saveQuadrangulation(std::string);
private:
void computeTriangulation(triangulateio *);
};
and its methods:
void MesDomain::setPolygon(std::vector<MesPoint> v, std::vector<MesEndPoints> s, std::vector<MesPoint> h) {
for (std::vector<MesPoint>::iterator it=v.begin(); it!=v.end(); ++it) polygon->addVertex(*it);
for (std::vector<MesEndPoints>::iterator it=s.begin(); it!=s.end(); ++it) polygon->addSegment(*it);
for (std::vector<MesPoint>::iterator it=h.begin(); it!=h.end(); ++it) polygon->addHole(*it);
}
void MesDomain::computeQuadrangulation() {
triangulateio *triangulation;
triangulation = new triangulateio;
...
computeTriangulation(triangulation);
...
}
void MesDomain::computeTriangulation(triangulateio *out) {
triangulateio in;
...
char * opt = ...;
triangulate(opt, &in, out, 0);
}
and triangulateio and triangulate are defined in the C library
spirit
17th June 2009, 13:17
put a break point and check all variables. maybe some of pointers are equal to "0".
void MesDomain::computeTriangulation(triangulateio *out) {
triangulateio in;
...
char * opt = ...;//<--- put a break point here
Lykurg
17th June 2009, 13:23
I have no problem if i call it from main but when i call it whitin a QWidget the program crashes.
After you call "delete domain" in run() you maybe try to access any variable/function of that class? This would explain, why in main() you don't get an error, since there you don't delete it (of just leave the application afterward).
jonmatteo
17th June 2009, 14:47
thank you all
I cant get what was the problem but now i can run it
probably some empty pointer
Thanks
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.