Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中结构的构造函数+;导致非零退出代码_C++_Struct_Exit Code - Fatal编程技术网

C++ C+中结构的构造函数+;导致非零退出代码

C++ C+中结构的构造函数+;导致非零退出代码,c++,struct,exit-code,C++,Struct,Exit Code,当我在下面的代码中调用SegTree结构的构造函数时,我总是得到一个非零的退出代码。当我注释掉初始化结构的行时,程序运行时没有问题。有人能解释为什么会发生这种情况以及如何修复我的代码吗 #include <iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm> #include <string> #include <vector> #incl

当我在下面的代码中调用SegTree结构的构造函数时,我总是得到一个非零的退出代码。当我注释掉初始化结构的行时,程序运行时没有问题。有人能解释为什么会发生这种情况以及如何修复我的代码吗

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <string>
#include <vector>
#include <string.h>

using namespace std;

struct SegTree{
    int N;
    long long tree [1<<20], arr [1<<20];
    SegTree(int x){ N = x; }
};

int main(){
    SegTree st(len);
    return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
结构分段树{
int N;
长长的树[1哇,那是一个很大的结构:

struct SegTree{
    int N;
    long long tree [1<<20], arr [1<<20];

(使用向量后,可能比在构造函数中以某个最大大小一次性分配内存要好得多).< /P> >代码> STDIO .H/<代码> >代码> STDLI.H./>和 String .H./C>是C标准库,不是C++标准库。C++标准库头永远没有后缀“代码> .H/CODE”。也可以用现代C++方式初始化类成员。你认为代码“多长”?长长树[1码]长长树?[1] Tabre的复制品:我的C++标准的副本指定了<>代码> STDIO .H/COD>等,与代码> CSTDIO >有什么关系。它们在什么意义上是“不是C++标准库”?(请注意,在实践中,
cstdio
始终将名称放在全局名称空间中,
std::
,这现在是标准允许的。)正如我在前面的一条评论中所说,数组的大小不是问题所在。我能够在没有结构的情况下成功运行代码。@YouKnowMe:您使用的是哪种编译器?如果gcc看到
long-long-array[1其中一种可以工作,我不会感到惊讶。:)然而,我仍然不明白为什么我能够在结构之外分配如此大的数组大小…@YouKnowMe-如果你直接将数组放入main,编译器可以将数组优化到数据段中。这两种情况不需要进行比较。啊,我明白了。我只需要将代码更改为使用向量。
    std::vector<long long> tree = {1<<20};
    std::vector<long long> arr  = {1<<20};