gpt4 book ai didi

C编程总线错误/段错误

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:36 24 4
gpt4 key购买 nike

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

104:8: warning: variable ‘new_file’ set but not used [-Wunused-but-set-variable]
159:56: warning: ‘pixel’ may be used uninitialized in this function [-Wuninitialized]
185:10: warning: ‘bmpOut’ may be used uninitialized in this function [-Wuninitialized]

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

你们觉得这有什么不对吗?我认为这与指针有关。

最佳答案

104:8: warning: variable ‘new_file’ set but not used [-Wunused-but-set-variable]

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

159:56: warning: ‘pixel’ may be used uninitialized in this function [-Wuninitialized]

这是一个更严重的问题。在 pixel[holdr*Height+holdc] 之前,没有任何东西可以分配像素(指针)指向一个对象。在使用 pixel[...] 之前,您需要确保它指向某物!我建议采用 pixel = malloc(count * sizeof *pixel); 的方式。

185:10: warning: ‘bmpOut’ may be used uninitialized in this function [-Wuninitialized]

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

您是否考虑过使用 valgrind?

关于C编程总线错误/段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com