C++ C++;发送前删除数据包

C++ C++;发送前删除数据包,c++,tcp,poco,packet,C++,Tcp,Poco,Packet,我遇到一个问题,当我发送大数据包(5000字节)时,数据包在发送之前被删除,所以服务器崩溃 有没有办法在发送数据包时将其删除 如果不删除[]服务器将正常工作 以下是代码: case 675: char * datax; datax = new char [5824](); datax[0] = 0xc0; datax[1] = 0x16;

我遇到一个问题,当我发送大数据包(5000字节)时,数据包在发送之前被删除,所以服务器崩溃

有没有办法在发送数据包时将其删除

如果不删除[]服务器将正常工作

以下是代码:

            case 675:
                char * datax;
                datax = new char [5824]();
                datax[0] = 0xc0;
                datax[1] = 0x16;
                datax[4] = 4;
                datax[6] = 1;
                datax[8] = 1;
                datax[10] = 1;
                datax[12] = 0xb1;
                datax[13] = 0x09;
                datax[20] = 1;
                datax[24] = 0x16;
                datax[28] = 0x05;
                datax[29] = 0x09;
                datax[30] = 0x0e;
                datax[5801] = 0xc0;//coords
                datax[5802] = 0xb7;
                datax[5803] = 0xc4;
                datax[5805] = 0xe0;
                datax[5806] = 0x21;
                datax[5807] = 0x45;//end
                datax[5808] = 0x0c;
                datax[5813] = 0x9d;
                datax[5814] = 0x0f;
                datax[5815] = 0xbf;
                datax[5822] = 0x52;
                datax[5823] = 0x2a;
                _socket.sendBytes(datax, 5824);
                delete [] datax; //here crash
                break;

不是说这是正确的解决方案(事实并非如此),但如果在
sendBytes
之后、
delete
之前添加0.5秒的“睡眠”,这是否“解决”了问题?对我来说,这似乎很奇怪,因为一个健全的网络驱动程序实现会在返回到客户端代码之前复制整个缓冲区。休眠线程将是一个糟糕的选择,但我的线程轮询只有8个线程。休眠的目的并不是为了解决问题(我在上一篇文章中试图澄清!),但要确定发送后立即删除的
是否是问题所在。对我来说,这毫无意义。或者,您根本无法删除该块-假设您的计算机有几GB的RAM,则发送足够的数据包需要相当长的时间才能耗尽所有内存-4000个数据包刚好超过20MB,因此在2GB中,您将获得大约400000个数据包。。。如果一切顺利,那么您就知道是
delete
导致了问题。如果不是,那么问题不在于
delete
…是的,但只要您知道它正在泄漏,并且您是为了调试而这样做的,这不是问题-只要记住在调试完成后将delete放回即可。同样,目的不是修复您的bug,而是确定导致bug的原因-如果通过删除
删除
,它就消失了,那么这就是问题的关键所在。如果删除
删除
后仍有问题,则是其他原因导致问题!我认为从指针到字符数组和删除指针的strcpy就足够了。