为什么 C++ 中的以下结构声明会导致退出 127?
Why does the following struct declaration in C++ causes exit 127?
>我正在尝试解决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
这应该可以做到。
已解决:从问题的编辑部分可以看出,问题在于该结构类型的数组的内存分配,而不是结构声明本身,它与问题的约束有关。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- C++:无法访问声明的受保护成员
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 为什么 C++ 中的以下结构声明会导致退出 127?
- 函数退出时是否需要清除函数内部本地声明'map' STL?
- 如果全局变量的声明引发异常,如何退出C++程序