Abdelrazak Younes wrote:
Using ::exit often results (with Qt) in a crash because destructors
of static (Qt) objects are called in arbitrary order.
Are you sure? AFAIK ::exit() will exit without any cleanup.
#include <stdlib.h>
struct A {
int* ptr;
A() : ptr(0) {}
~A() { int i = *ptr; }
};
// comment out to avoid crash (msvc)
A a;
int main() {
A b;
exit(1);
return 0;
}
The best solution
would be to leave Qt's event loop and to regulary return from app.exec().
Therefore, does it work to call QCoreApplication::exit instead of ::exit?
I've tried and it doesn't work fine because then we exit normally.
Wouldn't it be better to catch an exception in main:
catch {
QCoreApplication::exit(1)
return 1;
}
I only ask, because we had really strange cross-platform problems in the past
because of using exit
Peter