fopen()上的总线错误

Bus Error on fopen()?

本文关键字:总线 错误 fopen      更新时间:2023-10-16

我正在使用Totalview来调试一些代码,并且它正在停止与总线错误。

这是什么,我如何解决它?下面是代码片段

In my main:
    char *infilename = "/home/dcole/Images/lena1024s.jpg";
    /* Try opening a jpeg*/
    if( read_jpeg_file( infilename ) > 0 ) 
    {   
       //do some stuff    
    }
函数:

int read_jpeg_file( const char *filename )
 {
         /* these are standard libjpeg structures for reading(decompression) */
         struct jpeg_decompress_struct cinfo;
         struct jpeg_error_mgr jerr;
         /* libjpeg data structure for storing one row, that is, scanline of an image */
         JSAMPROW row_pointer[1];
         FILE *infile = fopen( filename, "rb" ); //this line is where the debugger stops with a Bus Error
         unsigned long location = 0;
         int i = 0;
         if ( !infile )
         {
                 printf("Error opening jpeg file %sn!", filename );
                 return -1;
         }
         return 1;
 }

我传入的文件确实存在。我可以看到它在调试器中显示为完整路径的正确字符串。

我认为你有一个内存访问问题,因为文件名变量…而不是:char *infilename = "/home/dcole/Images/lena1024 .jpg";

尝试使用:char infilename[] = "/home/dcole/Images/lena1024 .jpg";