非常抱歉,我无法提供我的代码的更多细节,因为我正在接管另一个项目。类结构非常复杂,我无法用简单的例子来重现问题。成功调用析构函数或调用empy析构函数后出现Seg错误。 C++
本质上,如果我删除一个对象,析构函数中的所有语句都已成功执行,但只要析构函数完成执行,seg故障就会发生。即使我只是让析构函数为空而没有做任何事情,seg错误仍然会发生。这个类没有任何基类。
我的代码如下所示:
ParallelSynthesizer* p = new ParallelSynthesizer(argc, argv);
p->synthesize();
delete p;
cout << "after deleting" << endl;
没有显示,由于赛格故障之前发生的“删除后”。但p的析构函数已成功执行。
将帖子一些意见后]的“合成()”方法不使用多线程,但它是非常简单的:
pthread_t threads[num_threads];
// makes the "params" array here. skipped.
for (int i=0; i<num_threads; i++) {
pthread_create(&threads[i], NULL, synthesizeThreadMethod, (void*)(params[i]));
}
for (int i=0; i<num_threads; i++) {
pthread_join(threads[i], NULL);;
}
这几乎所有的合成()方法,所以我不知道认为多线程会导致任何问题。
我在linux上使用g ++。有人知道这个问题的可能原因吗?
我再次表示歉意,因为无法找到产生此错误的简单示例。
它有任何基类吗? – GManNickG 2011-03-20 06:21:50
@GMan:不,完全没有。 – CodeNoob 2011-03-20 06:22:31
那么在析构函数之后运行什么呢? – GManNickG 2011-03-20 06:25:07