c++增加缓冲区大小



我正在用c++实现一个tcp/ip服务。实际情况是,服务器将接收数据,每个数据可能包含1条或多条消息。服务器每轮最多只允许接收100字节的数据。因此,在场景1中,如果消息是120字节,它将被拆分为2个数据。所以我创建了一个全局静态char tmpbuffer[100]临时变量。在接收到数据后,我检查MSG报头以获取消息的总大小。如果超过100字节,我将前100字节存储到tmpbuffer中。它将等待第二个循环,下一个100字节的数据将到来。这100个字节将包含我想连接到tmpbuffer的剩余20个字节。

但是这里的问题是tmpbuffer的大小是动态增加的。让我们假设这个函数将满足大于120字节的消息。它可以是1000字节,因此消息将被分成10个数据,每个数据为100字节。通过只使用char,我可以动态地增加tmpbuffer的大小吗?这意味着我全局设置,静态tmpbuffer[100]。在这个函数中,一旦我知道了MSG报头的总消息大小,我该如何增加tmpbuffer的大小呢?

使用std::vector代替。

如果您想使用原始数组(无论出于何种原因),为什么不声明char* tmpbuffer,然后分配与您需要使用new char[size]一样大的字符数组?由于您显然不是在多线程环境中,如果所需的大小增加,您应该没有问题free[] tmpbuffer并将其重新创建为一个更大的数组。

不能增加静态分配数组的大小。你必须使用std::vector<char>并使用它的resize()函数来增加它的大小到你需要的

您也可以在这里使用std:string,并继续添加到该字符串

最新更新