分配空字符串时出现分段错误

时间:2017-03-25 12:38:50

标签: c++ string segmentation-fault

以下是我尝试运行的代码 -

typedef struct node{
  string str;
}node;

string s = "";

node *t = (node *)malloc(sizeof(node));
t->str = s ; // if s is empty, this statement gives segmentation fault.

cout<<t->str<<endl;

1 个答案:

答案 0 :(得分:5)

在C ++中,你应该永远使用malloc来分配带有构造函数的对象。 malloc函数仅分配内存,但不会导致调用构造函数。

这意味着您的str成员未初始化,并且在使用未定义行为时。

如果 您确实需要动态分配使用new代替:

node* t = new node;