【发布时间】:2018-06-07 12:19:01
【问题描述】:
我正在尝试分配一个string,当我收到此错误时,它的值被传递到方法中:
Bus error: 10
我的代码:
struct user {
string username;
string password;
};
方法:
user *init_user(const string & username, const string & password){
user *u = (user *)malloc(sizeof(user));
if (u == NULL){
return NULL;
}
u->username = username;
u->password = password;
return u;
}
调用:
user *root = init_user("root", "root");
我认为错误是由
引发的u->username = username;
u->password = password;
我使用的编译器是c++11
操作系统:MacOS
【问题讨论】:
-
不要使用
malloc()分配具有非平凡构造函数/析构函数的任何成员(例如std::string)的类型。行为未定义。 -
@Peter 谢谢。问题已经解决了