如何知道ac程序的堆栈溢出?

我在c中模拟了一个问题(3d Ising模型),但是当问题大小变大时,程序停止并出现以下错误:

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV) 

在程序中我有一个递归函数,完成所有工作,我怀疑错误是由于堆栈溢出(在递归函数中)但我不知道如何确定。

如果是因为堆栈溢出,有没有办法解决这个问题而不改变程序设计?

我正在使用Clion IDE。

 /* * recursive function to form Wolff Cluster(= WC) */ void grow_Wolff_cluster(lattic* l, Wolff* wolff, site *seed){ /*a neighbor of site seed*/ site* neighbor; /*go through all neighbors of seed*/ for (int i = 0 ; i neighbors[i]; /*add to WC according to the Wolff Algorithm*/ if(neighbor->spin == seed->spin && neighbor->WC == -1 && ((double)rand() / RAND_MAX) Wolff_cluster[wolff->WC_pos] = neighbor; wolff->WC_pos++; // the number of sites that is added to WC neighbor->WC = 1; // for avoiding of multiple addition of site neighbor->X = 0; ///controller_site_added_to_WC(); /*continue growing Wolff cluster(recursion)*/ grow_Wolff_cluster(l, wolff, neighbor); } } } 

使用GDB调试器并查看调用堆栈。

 gdb main r bt