Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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++;运行大内存程序时崩溃 我对编程很陌生。我在Windows 7(x86)上使用DEV C++。我正在尝试运行下面的程序。我不认为有一个逻辑错误导致程序崩溃。程序运行在一个在线JUGDE(代码段)上。 要成功执行程序,我应该做什么_C++_Crash - Fatal编程技术网

开发C++;运行大内存程序时崩溃 我对编程很陌生。我在Windows 7(x86)上使用DEV C++。我正在尝试运行下面的程序。我不认为有一个逻辑错误导致程序崩溃。程序运行在一个在线JUGDE(代码段)上。 要成功执行程序,我应该做什么

开发C++;运行大内存程序时崩溃 我对编程很陌生。我在Windows 7(x86)上使用DEV C++。我正在尝试运行下面的程序。我不认为有一个逻辑错误导致程序崩溃。程序运行在一个在线JUGDE(代码段)上。 要成功执行程序,我应该做什么,c++,crash,C++,Crash,我的解决方案: #include<iostream> using namespace std; int main() { int n,i,j; long long a[100000],b[100000],sort[200000],temp; char aresult[100000],bresult[100000]; char*sortpoint[200000]; cin>>n; for(i=0;i<n;i++)

我的解决方案:

#include<iostream>

using namespace std;

int main()
{
    int n,i,j;
    long long a[100000],b[100000],sort[200000],temp;
    char aresult[100000],bresult[100000];
    char*sortpoint[200000];

    cin>>n;

    for(i=0;i<n;i++)
    {
        cin>>a[i]>>b[i];

        aresult[i]='0';
        bresult[i]='0';
    }

    for(i=0;i<(n/2);i++)
    {
        aresult[i]='1';
        bresult[i]='1';
    }

    i=0;
    j=n+i;

    for(i=0;i<n;i++)
    {
        sort[i]=a[i];
        sort[j]=b[i];

        sortpoint[i]=&aresult[i];
        sortpoint[j]=&bresult[i];

        j++;
    }

    for(i=0;i<(2*n);i++)
    {
        for(j=0;j<(2*n)-i-1;j++)
        {
            if(sort[j]>sort[j+1])
            {
                temp=sort[j];
                sort[j]=sort[j+1];
                sort[j+1]=temp;
            }
        }
    }

    for(i=0;i<n;i++)
    {
        *sortpoint[i]='1';
    }

    cout<<aresult<<endl<<bresult;   

}
#包括
使用名称空间std;
int main()
{
int n,i,j;
长a[100000],b[100000],排序[200000],温度;
char aresult[100000],bresult[100000];
字符*排序点[200000];
cin>>n;
对于(i=0;i>a[i]>>b[i];
a结果[i]=“0”;
b结果[i]=“0”;
}

对于(i=0;i您在堆栈上分配了太多。线程的默认堆栈大小是1MB,除非它被显式更改,并且您的数组超过了1MB

相反,将数据移动到堆上

long long *a=new long long[100000];

当您仅限制进程的可用虚拟内存时,32位Windows应用程序的可用虚拟内存将为2GB。

您正在经历一种称为堆栈溢出的状态,因为程序正在崩溃。这主要是因为存在大数组元素的静态分配。因为在您的程序中,n是一个变量在循环测试条件下,这是必需的。我建议您动态分配内存。这将节省大量浪费的内存。为此,您可以使用新的运算符。如果您想要更好地组织数据,甚至可以使用链接列表。但这会增加程序的复杂性。

不要分配吃了堆栈上的所有东西。这很可能太多了。您介意发布指向确切问题的链接吗?您是否尝试运行调试器以确认没有逻辑问题?由于堆栈大小的限制,您无法定义具有如此大大小的静态数组。请改为使用动态数组。例如
a=new long long[ 100000 ] <代码>或使用<代码>向量A(100000)< /C> > ShaneHsu,因为他是C++的,他瞄准的是静态大小的数组,<代码> STD::向量< /代码>也同样有效。<代码> STD::向量A(100000);< /Cord> @ ShaneHsu。