c++增加缓冲区大小
c++ increase buffer size
我正在用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
,并继续添加到该字符串
- C++字符*缓冲区的大小
- 数组索引的值没有增加
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 为什么我的代码在输出中增加了93天
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- ostream过载时的缓冲区冲洗
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- Xaudio2在更改缓冲区或循环时弹出声音
- 有效地使用std::unordered_map来插入或增加键的值
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 多线程双缓冲区
- Android P-9.0.0_r53 Logcat主缓冲区超出定义大小
- 套接字读取后,我在缓冲区中看到意外输入
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 增加 UDP 套接字中的接收缓冲区
- RapidXML API是否可以增加缓冲区
- c++增加缓冲区大小
- 如何增加终端缓冲区大小