我有一个定义在下面的类的成员函数,比如说
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;
}
输出是
StringMember
Hello
你能解释一下为什么会这样吗??谢谢
最佳答案
很可能是因为 another_member.getStringMember
和 a
是同一个字符串。
在这种情况下,在使用 a="hello";
修改字符串后使用 ptr
实际上是不合法的,因为变异操作可以使先前获得的指针无效。
关于c++ - 字符串类中 c_str 函数的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4564540/