c++ - 字符串类中 c_str 函数的内存分配

标签 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; 
}

输出是

StringMember

Hello

你能解释一下为什么会这样吗??谢谢

最佳答案

很可能是因为 another_member.getStringMembera 是同一个字符串。

在这种情况下,在使用 a="hello"; 修改字符串后使用 ptr 实际上是不合法的,因为变异操作可以使先前获得的指针无效。

关于c++ - 字符串类中 c_str 函数的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4564540/

相关文章:

c++ - 使用后缀数组实现最长公共(public)子串

objective-c - 将 UTF8 字符串中的变音符号从 C/Obj-C 转义为 javascript

java - 如何将 ASCII 值的字符串表示形式转换为字符

c++ - 解析分配器::重新绑定(bind)调用

c++ - 临时元素的保存期限有什么要求?

c++ - 将迭代器转换为另一种类型

c++ - 使用 OpenCV 和机器学习的简单对象检测

c++ - 未调用构造函数

c# - Linq 查询从多个 List<string> 中选择单个字符串

Java 接口(interface)...动态或静态内存?