C ++ / Code:阻止内存问题

时间:2016-07-12 19:16:03

标签: c++ arrays memory

编译此代码时出错:

 int i[720][720];

错误:进程返回-1073741571(0xC00000FD)。

如果我声明:

int i[719][719];

会发生什么?

编辑:

好的......我确实喜欢你说的。它现在有效。我试图纠正多个大数字from here的代码。

我不得不改变

        if(carry < 10){
            mat[i][j-(SIZE-1-i)]=carry;
            carry=0;
        }

        if(carry < 10){
            if (j-(SIZE-1-i) < 0) continue;
            mat[i][j-(SIZE-1-i)]=carry;
            carry=0;
        }

3 个答案:

答案 0 :(得分:0)

您的筹码太小,而您应该使用动态分配(例如std::vectornew)。如果要继续使用堆栈分配,可以在编译器选项或命令行中增加堆栈大小(取决于您未声明的编译器)。

答案 1 :(得分:0)

错误是您的数组太大而无法将其存储在编译器的标准堆栈空间中。您可以尝试在在线Codechef编译器上编译代码。它具有非常大的堆栈容量。链接是:https://www.codechef.com/ide

或者当然,您可以使用std::vector使用向量,或使用new关键字动态分配您的数组(不是非常强烈推荐)。

答案 2 :(得分:-2)

为什么要创建此大小的数组? 为了提高内存效率,请尝试使用关键字new声明的动态数组。示例:myArray = new int [10] 它们可以根据您的需要和内存效率进行扩展。