我试图制作一个将过滤器放在bmp文件上的程序。我运行它并在mac gcc上得到一个总线错误,我在linux机器上得到以下内容:
104:8:警告:变量'new_file'已设置但未使用[-Wunused-but-set-variable]
159:56:警告:'像素'可能在此功能中未初始化使用[-Wuninitialized]
185:10:警告:'bmpOut'可以在此功能中未初始化使用[-Wuninitialized]
当我运行它时,我得到一个故障核心转储。
你们有什么问题吗?我认为这与指针有关。
答案 0 :(得分:1)
104:8:警告:变量'new_file'已设置但未使用[-Wunused-but-set-variable]
这告诉您变量new_file
对您的逻辑没有任何影响。它不必要地使您的代码复杂化;你应该删除它。但是,这不会导致您的段错误。后两者更有可能:
159:56:警告:'pixel'可能在此函数中未初始化使用[-Wuninitialized]
这是一个更严重的问题。在pixel[holdr*Height+holdc]
之前,没有任何内容可以指定像素(指针)指向对象。在使用pixel[...]
之前,您需要确保它指向某事!我建议采用pixel = malloc(count * sizeof *pixel);
的方式。
185:10:警告:'bmpOut'可能在此功能中未初始化使用[-Wuninitialized]
同样,这非常严重!我想你想在写入该文件之前先让tmpOut指向一个文件。我建议使用tmpOut = fopen("/path/to/filename", "wb");
或tmpOut = stdout;
。
你考虑过使用valgrind吗?