有一个奇怪的分段错误错误。下面的代码运行良好
#include <stdlib.h>
#include <stdio.h>
main()
{
int matrixSize = 1000;
int i,j;
double a[matrixSize][matrixSize];
for (i = 0; i < matrixSize; i++)
for (j = 0; j < matrixSize; j++)
a[i][j] = rand() % 10;
double b[matrixSize][matrixSize];
for (i = 0; i < matrixSize; i++)
for (j = 0; j < matrixSize; j++)
b[i][j] = rand() % 10;
return 0;
}
但是当我尝试初始化另一个二维数组时,我收到“分段错误”异常:
#include <stdlib.h>
#include <stdio.h>
main()
{
int matrixSize = 1000;
int i,j;
double a[matrixSize][matrixSize];
for (i = 0; i < matrixSize; i++)
for (j = 0; j < matrixSize; j++)
a[i][j] = rand() % 10;
double b[matrixSize][matrixSize];
for (i = 0; i < matrixSize; i++)
for (j = 0; j < matrixSize; j++)
b[i][j] = rand() % 10;
return 0;
}
潜在原因是什么?
您很可能超出了堆栈大小。
在您用来运行此程序的终端中,尝试输入
ulimit -s unlimited
并重新运行,假设您在使用 bash(或 sh)的 Linux 系统上。
如果您必须使用该大小的数组,则可以使它们动态化,以便它们位于堆上而不是堆栈上(如果由于某种原因更改堆栈大小存在问题)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)