非常抱歉,我無法提供我的代碼的更多細節,因爲我正在接管另一個項目。類結構非常複雜,我無法用簡單的例子來重現問題。成功調用析構函數或調用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