c ++增加缓冲区大小

时间:2011-07-14 11:49:08

标签: c++

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

然而,这里的问题是tmpbuffer大小动态增加。我们假设这个函数将满足大于120字节的消息。它可以是1000字节,因此消息将被分成10个数据,每个数据为100个字节。通过仅使用char,我可以动态增加tmpbuffer大小吗?这意味着我设定的, static tmpbuffer [100]。在函数中,一旦我知道msg头的总消息大小,我该如何增加tmpbuffer大小。

4 个答案:

答案 0 :(得分:4)

请改用std::vector。拯救你太麻烦了。

答案 1 :(得分:1)

如果您想使用原始数组(无论出于何种原因),为什么不声明char* tmpbuffer,然后使用new char[size]分配尽可能大的字符数组?由于您显然不在多线程环境中,如果所需的大小增加,您应该free[] tmpbuffer {{1}}并将其再次创建为更大的数组。

答案 2 :(得分:0)

您无法增加静态分配的数组的大小。您必须使用std::vector<char>并使用它的resize()函数将其大小增加到您需要的大小。

答案 3 :(得分:-1)

你也可以在这里使用std:string并继续追加该字符串。