C++程序因字符串串联而崩溃
C++ program crashing for a string concatenation.
这是导致崩溃的行:
if (size <= 0)
return;
if (data)
{
std::string sData = std::string((char*)data, size);
buffer += sData; <-- This is the line causing crash
processBuffer();
}
else
return;
这是堆栈跟踪:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1282016352 (LWP 27952)]
0x002b48ec in memcpy () from /lib/tls/libc.so.6
(gdb) bt
#0 0x002b48ec in memcpy () from /lib/tls/libc.so.6
#1 0x001fea31 in std::string::_Rep::_M_clone () from /usr/lib/libstdc++.so.6
#2 0x001fef2e in std::string::reserve () from /usr/lib/libstdc++.so.6
#3 0x001ff83d in std::string::append () from /usr/lib/libstdc++.so.6
#4 0x001ff9e2 in std::string::operator+= () from /usr/lib/libstdc++.so.6
#5 0x003fc6c8 in StreamDecoder::StreamDecoderEncoder::addData
at src/StreamDecoder.cpp:171
我已经验证了data
不是空的,缓冲区是一个声明为该类的私有成员变量的字符串。
我不知道为什么memcpy上有一个segfault。这里可能出了什么问题?
几个月前,我在一个学校项目中遇到了这个问题。。。如果字符串变大,可能会导致segfault。试着用鸵鸟流之类的东西来代替。
相关文章:
- 为什么我的结构在包含字符串时崩溃?
- 当 getline 用于获取整个字符串时,程序崩溃
- 删除动态字符串时程序崩溃
- 当 JSON 值应为 INT 但以字符串类型发送时,RapidJSON 崩溃
- 从数组比较2个字符串时,程序崩溃
- C 通过char读取文件字符串的文件char;崩溃
- 使用字符串而不是字符数组时程序崩溃
- 返回向量<对<字符串,字符串>>会导致 gcc 编译代码 (curlcpp) 崩溃
- 矢量尝试添加字符串时会崩溃
- 从CSV文件读取时,试图将值插入一个字符串中时崩溃
- 清理所拥有的(!)字符串成员时,析构函数偶尔崩溃
- 程序使用SCANF读取字符串时会崩溃
- 在执行字符串时更改字符会使程序崩溃
- 程序在输入 10 个字符串后崩溃
- o字符串流对象创建导致我的程序崩溃
- p = new String [0]和p = new Int [0]之后,为什么当删除[] p时字符串版本崩溃
- C++:使用 LSD 基数排序字符串排序崩溃
- jvm在尝试将TCHAR类型发送到接受字符串作为参数的java函数时崩溃
- Google protobuf在解析字符串数据时在Android中崩溃
- 崩溃:字符串问题