Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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++_Arrays_Segmentation Fault - Fatal编程技术网

C++ 为什么本地阵列出现分段错误?

C++ 为什么本地阵列出现分段错误?,c++,arrays,segmentation-fault,C++,Arrays,Segmentation Fault,我有一个程序,它将数据存储在一个本地数组中,可以调用mergesort或bubblesort来按升序排序该数组的内容。该程序对于大约10个项目的输入工作正常,但当我试图在一个非常大的数据集上运行该程序时,我立即收到seg故障。如果我使用动态数组,没有问题,但是对于这个项目,我必须使用本地数组。我曾尝试将“ulimit-s”设置为远高于所需内存空间的值,但仍然出现seg故障。如何在仍然使用本地数组的情况下避免分段错误。我已经附上了我的代码 seg错误出现在代码的这一部分,带有数组声明 #inclu

我有一个程序,它将数据存储在一个本地数组中,可以调用mergesort或bubblesort来按升序排序该数组的内容。该程序对于大约10个项目的输入工作正常,但当我试图在一个非常大的数据集上运行该程序时,我立即收到seg故障。如果我使用动态数组,没有问题,但是对于这个项目,我必须使用本地数组。我曾尝试将“ulimit-s”设置为远高于所需内存空间的值,但仍然出现seg故障。如何在仍然使用本地数组的情况下避免分段错误。我已经附上了我的代码

seg错误出现在代码的这一部分,带有数组声明

#include <iostream>
#include <fstream>

using namespace std;

int MaxSize = 2100000;

int main(){

    ifstream infile; //use provided class to create stream object for reading
    ofstream outfile; //use provided class to create stream object for writing
    //long int *p = new long [MaxSize];

    long int array[MaxSize]; //declare array
    double begin_time, end_time, cpu_time_used;

    infile.open("lab5_input.txt");
    if (infile.is_open()) //checks if file is really open
    {
        cout << "File successfully opened" << endl;
    }
    else
    {
        cout << "Error opening file";
    }

    int option;

} //declare variable
#包括
#包括
使用名称空间std;
int MaxSize=2100000;
int main(){
ifstream infle;//使用提供的类创建流对象以进行读取
ofstream outfile;//使用提供的类创建要写入的流对象
//long int*p=新长[MaxSize];
长整型数组[MaxSize];//声明数组
双开始时间、结束时间、使用的cpu时间;
infle.open(“lab5_input.txt”);
if(infle.is_open())//检查文件是否真正打开
{

CUT< P>问题可能是你的数组大小。你不能有一个2100000的数组。试着把数组做得更小。我在GCC和MSVC上尝试过,这两个程序都崩溃了,直到我减小了数组的大小。就像MatsPetersson所说的,一个更好的数组替代方法是C++的向量,除非你不能使用STL。< /P> < P>这个问题可能是你的问题。光线大小。你不能有一个2100000的数组。试着让数组更小。我尝试了GCC和MSVC,这两个程序都崩溃了,直到我减小了数组大小。就像MatsPetersson所说的,一个更好的数组替代方法是C++的向量,除非你不能使用STL。< /P>什么是Max的值?为什么你不使用<代码> STD::vector?/代码>?MaxSize是2100000。我在这个网站上的格式有问题,所以我只发布了seg错误似乎发生的部分,但我有“使用命名空间std”在我的程序中的其他地方。不要在堆栈上放置非常大的东西,否则可能会导致错误!MaxSize的值是多少?为什么不使用
std::vector
?MaxSize是2100000。我在这个网站上遇到了格式问题,所以我只发布了seg错误似乎发生的部分,但我有“使用命名空间std”在我的程序中的其他地方。不要在堆栈上放置非常大的东西,否则可能会导致!数组大小是个问题。我的程序适用于较小的输入文件。不幸的是,对于这个项目,我必须为这个特定的文件处理如此大的数组assignment@FredToews您可以使用不同风格的数组,这些数组不会导致堆栈overflow.
static long int array[MaxSize];
将是一个。另一个将是
std::vector array(MaxSize)
。数组大小是个问题。我的程序只处理较小的输入文件。不幸的是,对于这个项目,我必须为这个特定的文件处理一个如此大的数组assignment@FredToews您可以使用不同风格的数组,它们不会导致堆栈溢出。
static long int array[MaxSize]
将是一个。另一个将是
std::vector array(MaxSize);