你这代码里根本就没有data这个变量。
还有你得把caller代码也写出来。
【 在 casbupt (想不上班有钱赚) 的大作中提到: 】
: 标 题: [求助]string::push_back后,内存会破坏
: 发信站: 水木社区 (Fri May 29 16:44:01 2020), 站内
:
: size_t test(std::string& dest, const char* str, size_t len)
: {
: while(len--)
: {
: //省略无关的逻辑
: dest.push_back(*data); 执行完这行后, *(data+1)的值被改写了
: data++;
: }
: }
:
:
: 执行完dest.push_back(*data)后, *(data+1)的值被改写了。gdb watch发现是在 std::string::push_back里面被改成‘\0’了。
: 单进程,单线程程序,必现。
:
: 这是什么问题呢,怎么理解?
: --
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 114.247.88.*]
--
FROM 76.126.252.*