我正在编写一个程序,用于将文件从PPM
格式转换为ASCII art
。通过计算红绿色和蓝色值((红色+绿色+蓝色)/ 3)的平均值,将输入图像的每个像素转换为灰度。基本版本的升级是我在大小为n * n的窗口中计算RGB的平均值,这会减小图像的大小。输入文件由三行组成:第一行是我们要转换的文件的名称,第二行是我们要将转换后的图像写入的文件的名称,第三行是窗口的大小({{1} })程序必须通过将图像转换为n
来使用。我想我已经在程序中实现了我应该做的所有事情并且它确实编译了,但是当我测试它时,我得到了分段错误。请问有什么问题请问我在哪里?
以下是代码:
ASCII art
答案 0 :(得分:2)
array = malloc(width*sizeof(int **));
array[0] = malloc(height*sizeof(int *));
array[0][0] = malloc(3*sizeof(int));
此处仅分配array[0][0]
,对于所有其他索引,不会发生分配。然后,以下循环尝试写入未分配内存的索引,从而导致分段错误。