我正在尝试使用一个简单的程序来绘制一个 Mandelbrot 集 - 该程序生成一个整数数组,这些整数对应于图像中的颜色。我正在使用 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;
}