Vin*_*yak 2 c++ string memory-management
我有一个类的成员函数,如下所述
int x(std::string &a, std::string &b) {
char *ptr = another_member.getStringMember().c_str() //I am storing the pointer
cout << ptr << endl;
a="hello";
cout << ptr << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出是
StringMember
你好
你能解释一下为什么会这样吗?谢谢
很可能是因为another_member.getStringMember
和a
是相同的字符串.
在这种情况下,ptr
在修改字符串后使用它实际上是不合法的,a="hello";
因为变异操作会使先前获得的指针无效.