用于ASCII艺术转换的c代码中的分段错误

时间:2015-05-22 17:02:42

标签: c segmentation-fault ascii-art

我正在编写一个程序,用于将文件从PPM格式转换为ASCII art。通过计算红绿色和蓝色值((红色+绿色+蓝色)/ 3)的平均值,将输入图像的每个像素转换为灰度。基本版本的升级是我在大小为n * n的窗口中计算RGB的平均值,这会减小图像的大小。输入文件由三行组成:第一行是我们要转换的文件的名称,第二行是我们要将转换后的图像写入的文件的名称,第三行是窗口的大小({{1} })程序必须通过将图像转换为n来使用。我想我已经在程序中实现了我应该做的所有事情并且它确实编译了,但是当我测试它时,我得到了分段错误。请问有什么问题请问我在哪里?

以下是代码:

ASCII art

1 个答案:

答案 0 :(得分:2)

array = malloc(width*sizeof(int **));
array[0] = malloc(height*sizeof(int *));
array[0][0] = malloc(3*sizeof(int));

此处仅分配array[0][0],对于所有其他索引,不会发生分配。然后,以下循环尝试写入未分配内存的索引,从而导致分段错误。