Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取C中的.png文件并通过套接字发送_C_Sockets_Segmentation Fault - Fatal编程技术网

读取C中的.png文件并通过套接字发送

读取C中的.png文件并通过套接字发送,c,sockets,segmentation-fault,C,Sockets,Segmentation Fault,我目前正在一个用C实现的简单服务器上工作。 处理jpg文件很好,btu png的给我一个分割错误。我从来没有通过这段代码。为什么会这样 fseek (file , 0 , SEEK_END); lSize = ftell (file); rewind (file); 谢谢。您访问这些阵列的方式很可能有问题。检查缓冲代码中的逻辑。确保在中心位置定义缓冲区大小,而不是硬编码大小和偏移量。你让它停止崩溃,但是如果你错过了一个潜在的逻辑错误,当你改变其他东西的时候,你可能会遇到一些神秘的问题。可能值得

我目前正在一个用C实现的简单服务器上工作。 处理jpg文件很好,btu png的给我一个分割错误。我从来没有通过这段代码。为什么会这样

fseek (file , 0 , SEEK_END);
lSize = ftell (file);
rewind (file);

谢谢。

您访问这些阵列的方式很可能有问题。检查缓冲代码中的逻辑。确保在中心位置定义缓冲区大小,而不是硬编码大小和偏移量。你让它停止崩溃,但是如果你错过了一个潜在的逻辑错误,当你改变其他东西的时候,你可能会遇到一些神秘的问题。可能值得你花时间再次故意破坏程序,并找出它被破坏的原因。正如其他人所建议的,在这一点上,调试器将是一个很好的主意。或者发布一个更完整的代码示例。

使用调试器,看看它在哪里出错。假设文件不为空,并且文件足够小,不会遇到32位限制,我认为这段代码看起来没问题。我建议您在valgrind和/或调试器下运行代码,看看到底出了什么问题。您发布的代码中几乎肯定没有出现问题。问:您是否在阅读此代码之前阅读该文件?闻起来好像你在做一个覆盖缓冲区的“读取”。缓冲区溢出通常发生在一个地方。。。但它们造成的损害只会在稍后的一段时间,在不同的地方出现。不过,问题是,jpg处理是相同的代码,它适用于jpg。文件不为空;我在前面使用if语句检查它。Q:是否会因为堆栈分配的变量太多而发生seg故障?A:是的:)