缓冲区大小已更改
buffer size changed
本文关键字:缓冲区 更新时间:2023-10-16
我正在套接字之间进行简单的通信,这是我的C++代码
while(1)
{
string buffer = "23,45n";
const char* foo = buffer.c_str();
cout << "size of buffer is " << sizeof(buffer)<<endl;
send (s, foo, sizeof(buffer), 0);
}
奇怪的是拳头迭代,缓冲区的大小正如预期的那样是 5,但自从第二次迭代以此类推后,大小急剧跃升至 32。 知道为什么吗?谢谢。顺便说一下,增加的尺寸来自前导空格。
sizeof
运算符返回对象的大小(以字节为单位)。 它不返回容器类型的长度。 您需要使用 std::string::length()
或 std::string::size()
来确定字符串的长度。
我想你误解了第一次迭代的 5:它一定来自其他地方。 sizeof(buffer)
是在编译时计算出来的 - 它是 std::string
的大小,所以你应该在每次迭代中看到 32。
如果要查找字符串的长度,请改用buffer.size()
。
sizeof(buffer)
告诉您std::string
对象的大小,这与存储在其中的字符数无关(顺便说一下,在您的示例中是 7,而不是 5)。
相关文章:
- C++字符*缓冲区的大小
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- ostream过载时的缓冲区冲洗
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- Xaudio2在更改缓冲区或循环时弹出声音
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 多线程双缓冲区
- Android P-9.0.0_r53 Logcat主缓冲区超出定义大小
- 套接字读取后,我在缓冲区中看到意外输入
- std::带有自定义缓冲区的 iostream 不允许我写入
- 从返回的顶点缓冲区查询顶点结构
- Vulkan 中的动态顶点缓冲区格式设置
- OpenGL 16 位模板缓冲区?
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 在 openGL 中多次绑定缓冲区
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 为什么缓冲区的内容在读取空 rdbuf 时被删除?