일부 코드를 디버깅하는 데 Totalview를 사용하고 있으며 버스 오류로 중지 중입니다.fopen()의 버스 오류?
이것은 무엇이며 어떻게 수정합니까? 여기에 코드를 내 주에서
를 싹둑된다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 %s\n!", filename);
return -1;
}
return 1;
}
내가 전달하고 파일이 존재 않습니다. 디버거에서 전체 경로에 올바르게 표시되는 것을 볼 수 있습니다.
디버거를 사용 해보았습니까? 어떤 라인에서 오류가 발생합니까? 또한 read_jpeg_file에 대한 호출과 filename 매개 변수의 초기화/할당을 표시 할 수 있습니까? – Joe
예를 들어 실행 해 보았습니까? valgrind가 메모리 손상을 확인합니까? – user786653
물론 - 그렇습니다. 저는 Totalview에서 그걸 밟았습니다. 그것은 메모리 검사기가 내장되어 있습니다 – Derek