我已經得到了讓我的堆棧溢出錯誤的OpenMP在MEX:計算器錯誤
#pragma omp parallel shared(Mo1, Mo2, sum_normalized_p_gn, Data, Mean_Out,Covar_Out,Prior_Out, det) private(i) num_threads(number_threads)
{
//every thread has a new copy
double* normalized_p_gn = (double*)malloc(NMIX*sizeof(double));
#pragma omp critical
{
int id = omp_get_thread_num();
int threads = omp_get_num_threads();
mexEvalString("drawnow");
}
#pragma omp for
//some parallel process.....
}
共享聲明的變量由malloc的創建下面的代碼部分。並且它們消耗大量內存
有兩個關於上述代碼的問題。 1)爲什麼這會在進入並行for循環之前產生堆棧溢出錯誤(即分段錯誤)?它在順序模式下運行時工作正常...... 2)我是否有權爲每個線程動態分配內存,如上面的「normalized_p_gn」?
問候 埃德溫
何時何地釋放動態分配的內存? – 2010-05-02 09:03:48