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