读取C中的.png文件并通过套接字发送
我目前正在一个用C实现的简单服务器上工作。 处理jpg文件很好,btu 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); 谢谢。您访问这些阵列的方式很可能有问题。检查缓冲代码中的逻辑。确保在中心位置定义缓冲区大小,而不是硬编码大小和偏移量。你让它停止崩溃,但是如果你错过了一个潜在的逻辑错误,当你改变其他东西的时候,你可能会遇到一些神秘的问题。可能值得
fseek (file , 0 , SEEK_END);
lSize = ftell (file);
rewind (file);
谢谢。您访问这些阵列的方式很可能有问题。检查缓冲代码中的逻辑。确保在中心位置定义缓冲区大小,而不是硬编码大小和偏移量。你让它停止崩溃,但是如果你错过了一个潜在的逻辑错误,当你改变其他东西的时候,你可能会遇到一些神秘的问题。可能值得你花时间再次故意破坏程序,并找出它被破坏的原因。正如其他人所建议的,在这一点上,调试器将是一个很好的主意。或者发布一个更完整的代码示例。使用调试器,看看它在哪里出错。假设文件不为空,并且文件足够小,不会遇到32位限制,我认为这段代码看起来没问题。我建议您在valgrind和/或调试器下运行代码,看看到底出了什么问题。您发布的代码中几乎肯定没有出现问题。问:您是否在阅读此代码之前阅读该文件?闻起来好像你在做一个覆盖缓冲区的“读取”。缓冲区溢出通常发生在一个地方。。。但它们造成的损害只会在稍后的一段时间,在不同的地方出现。不过,问题是,jpg处理是相同的代码,它适用于jpg。文件不为空;我在前面使用if语句检查它。Q:是否会因为堆栈分配的变量太多而发生seg故障?A:是的:)