recv()上的分段错误

时间:2010-09-03 03:26:39

标签: c

我使用send / recv在C语言中在Unix上编写客户端/服务器程序。我偶尔会从recv调用中获得分段错误。这种行为不是完全可重复的;有时它会发生,有时程序会运行完毕。

任何想法可能意味着什么?

3 个答案:

答案 0 :(得分:5)

如果分段错误在recv()调用本身,那么这意味着您传递给recv()的缓冲区未正确分配,或者不是您告诉recv()它的大小是

答案 1 :(得分:3)

嗯,这通常意味着您收到的数据超出了缓冲区所允许的数量。

例如,如果您malloc 20个字节且recv 1000个字节,则会遇到此问题。

不幸的是,如果没有看到代码,并且在精神调试领域没有一些非常迅速的进步,我们永远不会确定 * a


* a 顺便说一句,这是发布代码的一个微妙提示: - )

答案 2 :(得分:0)

这也可能意味着在您写入之前,另一侧的套接字已关闭。 这是一个可能导致您的应用程序关闭的SIGPIPE。