C++ 当数组大小增加时编译数组时崩溃

C++ 当数组大小增加时编译数组时崩溃,c++,arrays,memory,matrix,size,C++,Arrays,Memory,Matrix,Size,我试图在函数中返回一个整数矩阵,我决定使用typdef形式的矩阵。但当我使用返回1500 x 1500矩阵大小的函数运行项目时,编译在项目构建后崩溃。然后,我尝试使用不同的矩阵大小,当我编译了一个代码时,我在这里粘贴了一个较小的定义矩阵大小(150),问题就解决了。这是我测试过的,没有问题 typedef int Matrix[150][150]; int main(){ Matrix mat; for(int i=0;i<13;i++){ for(int j=0;j<13

我试图在函数中返回一个整数矩阵,我决定使用
typdef
形式的矩阵。但当我使用返回1500 x 1500矩阵大小的函数运行项目时,编译在项目构建后崩溃。然后,我尝试使用不同的矩阵大小,当我编译了一个代码时,我在这里粘贴了一个较小的定义矩阵大小(150),问题就解决了。这是我测试过的,没有问题

typedef int Matrix[150][150];

int main(){
Matrix mat;
for(int i=0;i<13;i++){
    for(int j=0;j<13;j++){
        mat[i][j]=i;
    }
}
cout << mat[10][11];
return 0;
}
typedef int矩阵[150][150];
int main(){
基质垫;

对于(inti=0;i,该矩阵在堆栈上分配,默认情况下只有几MB。
1500*1500*4大约占用9MB。像这样的大型阵列最好在堆上分配(新建/删除)。

该矩阵在堆栈上分配,默认情况下只有几MB。
1500*1500*4大约占用9MB。这样的大型阵列最好在堆上分配(新建/删除).

1500 x 1500整数矩阵对于32位整数将接近9MB,对于64位整数将接近18MB。这是一个巨大的堆栈分配,您可能会遇到编译器或环境限制。可能有一些构建时标志可以解决此问题,但更合理的解决方案是使用
new

对于32位整数,1500 x 1500整数矩阵将接近9MB,对于64位整数,则接近18MB。这是一个巨大的堆栈分配,您可能会遇到编译器或环境限制。可能有一些构建时标志可以解决此问题,但更合理的解决方案是分配对象在使用
new

的堆上,您可能耗尽了堆栈空间-例如,在32位系统上,1500*1500*sizeof(int)大约是9兆字节。使用std::vector或类似的(它从堆中分配)或者为您的编译器查找必要的开关以增加堆栈大小…

您可能耗尽了堆栈空间-例如,在32位系统上,1500*1500*sizeof(int)大约是9兆字节。使用std::vector或类似的(它从堆中分配)或者查找编译器增加堆栈大小所需的开关…

FYI-对我来说,它是有效的。我喜欢stackoverflow上的问题是有人炸毁了堆栈。每次都让我微笑。FYI-对我来说,它是有效的。我喜欢stackoverflow上的问题是有人炸毁了堆栈。每次都让我微笑。