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

C++ C++;/代码:内存块问题,c++,arrays,memory,C++,Arrays,Memory,我在编译此代码时遇到错误: int i[720][720]; 错误:进程返回-1073741571(0xC00000FD) 如果我声明: int i[719][719]; 会发生什么 编辑: 好的。。。我确实像你说的那样。现在可以了。我试着纠正乘法大数的代码 我还得换衣服 if(carry < 10){ mat[i][j-(SIZE-1-i)]=carry; carry=0; } if(进位

我在编译此代码时遇到错误:

 int i[720][720];
错误:进程返回-1073741571(0xC00000FD)

如果我声明:

int i[719][719];
会发生什么

编辑:

好的。。。我确实像你说的那样。现在可以了。我试着纠正乘法大数的代码

我还得换衣服

        if(carry < 10){
            mat[i][j-(SIZE-1-i)]=carry;
            carry=0;
        }
if(进位<10){
材料[i][j-(尺寸-1-i)]=搬运;
进位=0;
}

if(进位<10){
如果(j-(尺寸-1-i)<0)继续;
材料[i][j-(尺寸-1-i)]=搬运;
进位=0;
}

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

错误在于数组太大,无法将其存储在编译器的标准堆栈空间中。您可以尝试在联机Codechef编译器上编译代码。它的堆栈容量非常大。链接是:


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

为什么要创建这种大小的数组? 为了提高内存效率,请尝试使用使用关键字
new
声明的动态数组。示例:
myArray=newint[10]

它们可以根据您的需要进行扩展,并提高内存效率。

阵列太大,无法放入堆栈中。改用
std::vector
new
或任何其他容器(除了
std::array
具有相同效果)。哦,好的。。。但是否有可能增加烟囱的标准容量?我知道我只需要[1000]x[1000]数组。这取决于编译器。增加堆栈大小可能不是正确的解决方案。如果其他编译器的人试图编译你的代码呢?您应该使用
std::vector
new
分配的数组。这是一个问题还是一个答案?@Till看起来有点像“您的堆栈可能太小了”0xC00000FD是堆栈溢出异常,因此这里没有可能的问题。
        if(carry < 10){
            if (j-(SIZE-1-i) < 0) continue;
            mat[i][j-(SIZE-1-i)]=carry;
            carry=0;
        }