0

在我使用的库中,Bad address由于readv.

错误的确切来源是什么?是目的地还是源头?为什么不呢segfault

4

1 回答 1

3

Bad Address是 的错误消息EFAULT, http: //linux.die.net/man/2/read解释(read()错误代码与 for 相同readv())的意思buf是在您的进程的可寻址内存之外。因为readv()这意味着要么iov(可能,但我猜这会导致段错误,因为它只是库 - “解释” AFAIK),或者更可能的是 - 指针之一iov_base(传递给适当的系统调用来实现readv())在外部你的可寻址内存;EFAULT是告诉您用于数据交换的传入指针无效的内核方式。

检查NULL-pointers 或类似的东西,正如评论者所说:valgrind可以帮助您诊断问题的根源 - 如果您有可用于库和用户代码的调试符号。

于 2012-04-09T22:55:37.170 回答