数组中等大小时崩溃(1000x1000 int) - 更改堆栈大小?

时间:2014-02-03 09:36:24

标签: c gcc codeblocks stack-size

我正在尝试使用一个简单的程序来绘制Mandelbrot Set - 该程序生成一个整数数组,这些整数对应于图像中的颜色。我正在使用gcc / MiniGW在Windows上的Code :: Blocks中工作。它适用于小阵列尺寸(~500x500)。但是,当我在设置为1000x1000后尝试运行时,它会崩溃(“已停止响应”)。相同的代码使用gcc(CentOS)在没有特殊调用指令的linux远程终端下为任何数组大小成功编译和执行。

我认为我需要做的是增加Code :: Blocks下的堆栈大小。为此,我在Code :: Blocks中的链接器选项下尝试了“-Wl, - stack,1024”。但是我不能再构建 - “无法识别的命令行选项'--stack,1024”。这次电话有问题吗?

我会把代码放在这里,但因为它可以在预期的Linux上工作,所以我不认为这是问题所在。

int cal_pixel(double complex d,double b, int Nmax){
int count = 1;
double complex z = 0;
while (cabs(z) < b && count < Nmax){
    z=cpow(z,2)+d;
    count=count+1;
}
return count;
}
int main(int argc, char **argv) {
unsigned int color[M][N];
int i;
int j;
double complex d;
double dx;
double dy;
double b = 2;
char delim;
delim = ',';
dx = 2*b/(M-1);
dy = 2*b/(N-1);
FILE *fp;
d=-3+0.1*I;
for (j = 0;j < N; j++){
    for (i = 0; i < M; i++){
            d=(i*dx-b)+(j*dy-b)*I;
            color[i][j]=cal_pixel(d,2,250);
        }
}
fp = fopen("color.csv","w+");
for (j = 0; j < N; j++) {
    for (i = 0; i < M; i++){
        fprintf(fp, "%d", color[i][j]);
        fprintf(fp, "%c",delim);
    }
    fprintf(fp, "\n");
}
fclose(fp);
return 0;
}

0 个答案:

没有答案