c++ - 信号:分段错误 (11) 信号代码:无效权限 (2)
问题描述
我正在创建一个秩为 0 的二维向量。当访问向量时,我收到以下错误“信号:分段错误 (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
}
我正在使用大小节点*节点调整向量的大小。我不知道为什么会发生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++){
推荐阅读
- qt - QDialog中垂直布局的按钮带有返回值
- asp.net-core - OnModelCreating 迁移不适用于 1/4 实体
- bots - Telegram Bot 删除成员
- javascript - Vuetify v-slider - 更改值后执行功能(v-slider)
- r - 在闪亮的传单地图中更改图例标题
- android - 将导航架构组件与导航抽屉一起使用
- mysql - 将 mySQL 记录转换为 Elastic Search 记录
- php - mysql LAST_INSERT_ID 无法通过 php 工作
- python - 无法使用 sqlalchemy 和 sqlite 从模型创建表
- android - 收到时更改通知内容