在我使用的库中,Bad address
由于readv
.
错误的确切来源是什么?是目的地还是源头?为什么不呢segfault
?
Bad Address
是 的错误消息EFAULT
, http: //linux.die.net/man/2/read解释(read()
错误代码与 for 相同readv()
)的意思buf
是在您的进程的可寻址内存之外。因为readv()
这意味着要么iov
(可能,但我猜这会导致段错误,因为它只是库 - “解释” AFAIK),或者更可能的是 - 指针之一iov_base
(传递给适当的系统调用来实现readv()
)在外部你的可寻址内存;EFAULT
是告诉您用于数据交换的传入指针无效的内核方式。
检查NULL
-pointers 或类似的东西,正如评论者所说:valgrind
可以帮助您诊断问题的根源 - 如果您有可用于库和用户代码的调试符号。