这是我使用的代码:
unsigned int* r;
// [snip]
r=(unsigned int *) malloc(filesize*sizeof(unsigned int));
for (pos=0;pos<max;pos++) {
fread(&r, 1, 16, f);
printf(
"%x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %xt"
"%c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %cn",
r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10], r[11], r[12], r[13], r[14], r[15],
(char)r[0], (char)r[1], (char)r[2], (char)r[3], (char)r[4], (char)r[5], (char)r[6], (char)r[7], (char)r[8], (char)r[9], (char)r[10], (char)r[11], (char)r[12], (char)r[13], (char)r[14], (char)r[15]
);
}
fclose(f);
下面是 gdb 输出:
Program received signal SIGSEGV, Segmentation fault.
0x08048650 in main (argc=1, argv=0xbffff3c4) at binread.c:27
27 (char)r[0],(char)r[1],(char)r[2],(char)r[3],(char)r[4],(char)r[5],(char)r[6],(char)r[7],(char)r[8],(char)r[9],(char)r[10],(char)r[11],(char)r[12],(char)r[13],(char)r[14],(char)r[15]);
它有什么问题?
你提供一个指向fread
的指针
fread(&r, 1, 16, f);
这应该是
fread(r, sizeof(int), 16, f);