为什么 C++ 中的以下结构声明会导致退出 127?

Why does the following struct declaration in C++ causes exit 127?

本文关键字:退出 声明 结构 C++ 为什么      更新时间:2023-10-16

>我正在尝试解决USACO培训页面上的问题,为了解决它,我想我需要以下声明:

const int NMAX=35;
.
.
.
struct type{
int x,y;
int mat[2][NMAX][NMAX];
};

使用它,我编写了一个在我的计算机上运行的程序,但是当我将源文件发送到USACO分级机时,我收到以下错误:

您的程序将数据打印到 stderr。以下是数据: 程序:_error_while_loading_shared_libraries:_libm.so.6:_failed_to_map_segment_from_shared_object

由于我不知道这意味着什么,我发送了更多来源来注释代码块,试图缩小导致它的原因,我注意到错误是在程序运行之前的编译时给出的。此外,我看到如果我注释程序设法编译的结构声明,如果我不注释结构,但我注释三维数组声明,它也会编译。

例:

struct type{
int x,y;
//int mat[2][NMAX][NMAX]; 
};

(上面的代码还可以(

您能否解释一下此声明的问题以及如何解决?

谢谢!

编辑:我最初的信念是结构本身是错误的源头,但现实是它是紧随结构声明之后的数组声明。

const int NMAX=35;
.
.
.
struct type{
int x,y;
int mat[2][NMAX][NMAX];
}arr[NMAX*NMAX];

检查问题语句的约束使我能够缩小数组的大小,并解决了问题。谢谢大家的帮助!

您需要在结构的右大括号后放置一个分号。

struct type{
int x,y;
int mat[2][NMAX][NMAX];
};  //  <-this semicolon

这应该可以做到。

已解决:从问题的编辑部分可以看出,问题在于该结构类型的数组的内存分配,而不是结构声明本身,它与问题的约束有关。