请问这里为什么会stack overflow

img


我的代码是求矩阵变为转置矩阵需要两两移动几次

img

#include <stdio.h>
#include <math.h>

int main() {
int a[1000][1000], n, i, j, k, h, c, t1, t2, q=0;
scanf("%d", &h);
for (i = 0; i < h; i++) {
for (j = 0; j < h; j++) {
t1 = i;
t2 = j;

        scanf("%d", &a[t2][t1]);


    }

}
for (k = 0; k < h; k++) {
    for (c = 0; c < h; c++) {
        if (a[k][c] != a[c][k])
            q++;
        
    }
}
printf("%d\n", q);
return 0;

}

将int int a[1000][1000];放到main函数外面去

堆溢出了,参数有点多,可以把1000改小点或者


//第一个值是堆栈的保留空间
//第二个值是堆栈开始时提交的物理内存大小。堆栈改变为100M。
#pragma comment(linker,"/STACK:102400000,1024000")

望采纳,谢谢

0xC00000FD: Stack overflow。
即栈溢出,通常来说,栈的大小为1024K bytes=1024x1024 bytes。上面那个数组的大小=1000x1000x4 bytes>1024*1024。可见,数组的大小已经超过了栈的大小。所以会出现栈溢出这种现象。