通过指针更改`std :: string`时的分段错误

时间:2014-03-23 21:35:03

标签: c++ string pointers c++11

我有一个std::string*作为我班级的成员,但是当我尝试将其值设置为类构造函数中的任何内容时,我得到了segmentation fault (core dumped)

相关代码部分:

// class declaration:
//...
std::string* _sensorString;
//...


// on class constructor
//...
std::cout << "test "<< std::endl;
*_sensorString="s";
std::cout << *_sensorString<< std::endl;
//...

计划的输出:

test 
Segmentation fault (core dumped)

2 个答案:

答案 0 :(得分:6)

显然,是的。 std::string*是一个指针,当指针尚未初始化时,为指针赋值会导致分段错误。标准模板库可以帮助您使用对象,这样您就不需要指针。只需将您的类型声明为

即可
 std::string _sensorString;

然后您可以将其用作

 _sensorString = "s";

答案 1 :(得分:4)

您没有为对象分配内存,

std::string* _sensorString;

你应该写

_sensorString = new std::string;

写作之前

*_sensorString="s";