以下是我尝试运行的代码 -
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;
答案 0 :(得分:5)
在C ++中,你应该永远使用malloc
来分配带有构造函数的对象。 malloc
函数仅分配内存,但不会导致调用构造函数。
这意味着您的str
成员未初始化,并且在使用未定义行为时。
如果 您确实需要动态分配使用new
代替:
node* t = new node;