c++ - 信号 : Segmentation fault (11) Signal code: Invalid permissions (2)

标签 c++ segmentation-fault mpi

我正在创建一个等级为 0 的二维 vector 。当访问 vector 时,我得到以下错误“信号:段错误(11) 信号代码:无效权限 (2)”。

我尝试使用 malloc 创建动态 2d 矩阵,但错误仍然存​​在。

以下是代码片段-

#include <iostream>
#include <vector>
#include <climits>
#include <mpi.h>

using namespace std;

int main(int argc, char **argv){

    int num_procs, rank;
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &num_procs);

    int n1,n2;
    int nodes,edges,source;
    //int **matrix;
    vector<vector<uint32_t>> matrix;
    //take input
    if(rank==0){
        cin>>nodes;
        cin>>edges;
        cin>>source;
        //matrix = (int **)malloc(nodes*nodes*sizeof(int));
        //malloc2D(matrix,nodes,nodes);

        matrix.resize(nodes,vector<uint32_t>(nodes,0));

        cout<<"doing initialization"<<endl;
        fflush(stdout);
        for(int i=0;i<nodes;i++)
            for(int j=0;i<nodes;j++){       
                //segmentation fault occurs here
                matrix[i][j] = INT_MAX;
            }
        cout<<"done initialization"<<endl;
        for(int i=0;i<edges;i++){
            cin>>n1;
            cin>>n2;
            matrix[n1][n2] = 1;
            matrix[n2][n1] = 1;
        }       
    }
    // rest of the code
}

我正在调整大小为 nodes*nodes 的 vector 。我不知道为什么会发生 sengmentation 错误。

以下是错误片段-

doing initialization
[osboxes:02930] *** Process received signal ***
[osboxes:02930] Signal: Segmentation fault (11)
[osboxes:02930] Signal code: Invalid permissions (2)
[osboxes:02930] Failing at address: 0x7fb140021000
[osboxes:02930] [ 0] /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20)[0x7fb1477c8f20]
[osboxes:02930] [ 1] q-3(+0xbe09)[0x561813124e09]
[osboxes:02930] [ 2] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x7fb1477abb97]
[osboxes:02930] [ 3] q-3(+0xb9fa)[0x5618131249fa]
[osboxes:02930] *** End of error message ***

请帮忙!

最佳答案

内循环条件错误 for(int j=0;i<nodes;j++){ .必须是 for(int j=0;j<nodes;j++){

关于c++ - 信号 : Segmentation fault (11) Signal code: Invalid permissions (2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58207461/

相关文章:

c++ - 将对象指针(之前创建的)传递给动态共享库的 extern "C"函数

c - 为什么我的节点都没有被释放? (cs50 pset5 段错误) C

c++ - 如何加快我的稀疏矩阵求解器?

c++ -/usr/bin/ld : cannot find -lboost_system-mt

c++ - VSCode C/C++ Intellisense 和 Windows 特定库

c - 为什么 const int main = 195 导致一个工作程序但没有 const 它以段错误结束?

c - C 中带有 char* 数组的 scanf 段错误

c++ - 通过 MPI 发送和接收 2D 数组

c - MPI_Gather 似乎不起作用

c++ - BSP 和 MPI 有什么区别?