gpt4 book ai didi

c - C中的段错误

转载 作者:太空狗 更新时间:2023-10-29 15:54:56 25 4
gpt4 key购买 nike

我需要用 0 填充二维数组。但是编译后的程序出现了这个错误。怎么了?

int main()
{
int vert[1001][1001];
int hor[1001][1001];
int dudiag[1416][1416];
int uddiag[1416][1416];
int n, k, m;
int row, col;
int i, j;
int answer = 0;

for(i = 0; i <= 1000; i++){
for(j = 0; j <= 1000; j++){
vert[i][j] = 0;
hor[i][j] = 0;
}
}
...
}

当循环被注释掉时,它可以正常工作。

最佳答案

问题是您试图在自动存储(也称为“堆栈上”)中分配太多内存。当您注释掉循环时,编译器会优化分配以及现在未使用的变量,因此您不会遇到崩溃。

您需要更改对静态或动态内存(也称为“堆”)的分配以解决此问题。由于问题出在 main 内部,因此使数组成为 static 将是一个合适的选择。

int main()
{
static int vert[1001][1001];
static int hor[1001][1001];
static int dudiag[1416][1416];
static int uddiag[1416][1416];
...
}

main 以外的函数中,您可以使这些数组动态化,使用 malloc/calloc 分配它们,然后 free 一旦你的程序使用完它们。

关于c - C中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23184955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com