首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mpi决定因素,代码: 11分段故障

mpi决定因素,代码: 11分段故障
EN

Stack Overflow用户
提问于 2013-01-26 01:56:27
回答 1查看 4.2K关注 0票数 1

我是mpi的新手,我想用C++写一个计算矩阵行列式的程序,在开始尝试写它的时候,当我试图用mpi编译器编译的时候,我得到了这个错误。

代码语言:javascript
运行
复制
#include "mpi.h"
#include <iostream>
#include <stdio.h>
#include "/usr/include/malloc.h"

using namespace std;




int matrix[3][3] =  {{1,2,3},
                     {4,5,6},
                     {7,8,9}};

//**************


int** MakeMatrix (int** oldMatrix,int I,int J,int m,int n)
{
 int** newMatrix = (int**)malloc(sizeof(int*)*J);
 for(int i=0;i<J;i++)
 {
  newMatrix[i] = (int*)malloc(sizeof(int)*I);
 }
 for(int i=0;i<I-1;i++)
  for(int j=0;j<J-1;j++)
   if(i>=m)
    if(j>=n)
    {
     newMatrix[i][j]=oldMatrix[i+1][j+1];
    }
    else
    {
     newMatrix[i][j]=oldMatrix[i+1][j];
    }
   else
   {
    newMatrix[i][j]=oldMatrix[i][j];
   }
 return newMatrix;
}

 ///////////////////////

int determinan (int** lmatrix,int I,int J)
{
 if(I*J==1)
 {
  return lmatrix[I-1][J-1];
 }

 int minus = -1;
 int sum = 0;
 for(int j=0;j<J-1;j++)
 {
  for(int k=1;k<I+j+1;k++,minus*=minus);
  sum += minus*lmatrix[0][j]*determinan(MakeMatrix(lmatrix,I,J,0,j),I-1,J-1);
 }

 return sum;
}

///*************


int main(int argc,char **argv)
{
 //MPI_Init(&argc,&argv);
 cout<<determinan((int**)matrix,3,3)<<'\n';
 //MPI_Finalize();
 return 0;
}

下面是错误消息:

代码语言:javascript
运行
复制
===================================================================================
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   EXIT CODE: 11
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault (signal 11)
This typically refers to a problem with your application.
Please see the FAQ page for debugging suggestions
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-26 02:00:55

我相信这里面有很多问题。直接的一个是类型转换:

代码语言:javascript
运行
复制
cout<<determinan((int**)matrix,3,3)<<'\n';
                 ^^^^^^^

这不是一个有效的类型转换,因为matrix不是一个指针数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14527605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档