C编程总线错误/ Seg故障

时间:2013-04-08 01:28:19

标签: c segmentation-fault bus

我试图制作一个将过滤器放在bmp文件上的程序。我运行它并在mac gcc上得到一个总线错误,我在linux机器上得到以下内容:

  

104:8:警告:变量'new_file'已设置但未使用[-Wunused-but-set-variable]
  159:56:警告:'像素'可能在此功能中未初始化使用[-Wuninitialized]
  185:10:警告:'bmpOut'可以在此功能中未初始化使用[-Wuninitialized]

当我运行它时,我得到一个故障核心转储。

你们有什么问题吗?我认为这与指针有关。

1 个答案:

答案 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吗?