0

我使用以下代码来查找我的磁盘使用情况/

int main()
{
    struct statfs *stat;
    statfs64("/tmp",stat);
    perror("");
    printf("%lu \n",stat->f_bfree*stat->f_bsize);
    return 0;
}

perror 继续打印“错误地址”和大小的随机数。

Bad address

3264987920

PS:我试过了sudo ./a.outstatfs("a.out",stat)

可能是什么问题?

4

2 回答 2

4

您已经声明了一个指向结构的指针,statfs但实际上并没有为这样的结构分配空间。指针指向无处。它是未初始化的,它没有指向任何合法的地方。

struct statfs stat;

if (statfs64("/tmp", &stat) == -1) {
    perror("statfs64");
}
else {
    printf("%lu\n", stat.f_bfree * stat.f_bsize);
}
于 2013-04-17T01:44:17.313 回答
0

您使用 statfs *stat 没有内存分配,因此野指针使用它可能指向任何地方(非法内存地址)要么用有效内存初始化它,要么使用变量并传递它的引用。

于 2013-04-17T09:15:47.857 回答