我已经得到了让我的堆栈溢出错误的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