为什么fread segfault?

时间:2016-03-29 02:15:53

标签: c linux

我的任务是在.iso文件系统中为文件实现ls函数。我需要使用fread,但它是segfaulting。我知道文件存在,我知道它有数据。我有调用fread的格式,我已将其设置如下

static void ls(File *file, int32_t root_dir_size)
{
   void* sector;
   int result;
   result = fread(sector, 1, 1, file);
}

为什么这个段错误?我是C的新手,我来自C ++,所以不确定我在这里缺少什么。

1 个答案:

答案 0 :(得分:1)

fread需要记忆来记录它所阅读的数据。在您的情况sector中,第一个参数指向该内存。但是,您尚未初始化sector。您将需要分配一些内存,在这种情况下只需一个字节并指向sector。例如:

void *sector = malloc(1);

与往常一样,在您完成使用后,请不要忘记释放记忆。