C++/代码:块内存问题

C++ / Code:Blocks issue with memory

本文关键字:内存 问题 代码 C++      更新时间:2023-10-16

我在编译此代码时出错:

 int i[720][720];

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

如果我声明以下情况是可以的:

int i[719][719];

会发生什么?

编辑:

还行。。。我确实像你说的那样。它现在有效。我试图从这里更正乘以大数的代码。

我也必须改变

        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;
        }

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

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

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

为什么要

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