2

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

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

当我运行它时,我得到一个设置错误核心转储。

大家觉得这有什么不妥吗?我认为这与指针有关。

4

1 回答 1

1

104:8:警告:变量 'new_file' 已设置但未使用 [-Wunused-but-set-variable]

这告诉您该变量new_file对您的逻辑没有任何影响。它不必要地使您的代码复杂化;您可能应该删除它。但是,这不会导致您的段错误。后两种可能性更大:

159:56:警告:“像素”可能未在此函数中使用 [-Wuninitialized]

这是一个更严重的问题。在pixel[holdr*Height+holdc]. 在你使用之前pixel[...],你需要确保它指向某个东西!我建议类似的东西pixel = malloc(count * sizeof *pixel);

185:10:警告:“bmpOut”可能未在此函数中使用 [-Wuninitialized]

再说一次,这很严重!我认为您希望在写入该文件之前使 tmpOut 指向该文件。我建议类似于tmpOut = fopen("/path/to/filename", "wb");or的东西tmpOut = stdout;

你考虑过使用 valgrind 吗?

于 2013-04-08T02:30:19.943 回答