你需要帮助解决这个分段错误,不知道为什么我会得到它
Movie *newMovie = (Movie*) malloc(sizeof(Movie));
cout << "\nEnter the next movie title: ";
cin >> newMovie->title;
class Movie {
public:
Movie();
std::string title;
int year;
GenreType genre;
};
我检查了dgb并且在cin行出现了分段错误的任何建议? btw title是Movie类型的一个实例,是std :: string
答案 0 :(得分:3)
不要在C ++中使用malloc
,除非你确实知道你需要它(提示:你没有)。
malloc
分配内存,但它不会调用任何构造函数 - 它只是给你一大块字节来处理你认为合适的内容。当没有构造时,假装这些字节中有一个对象不起作用。
所以就这样做:
Movie *newMovie = new Movie();
cout << "\nEnter the next movie title: ";
cin >> newMovie->title;
你首先需要动态分配吗?为什么不呢:
Movie newMovie;
cout << "\nEnter the next movie title: ";
cin >> newMovie.title;
答案 1 :(得分:1)
这样做的简单而安全的方法是不使用动态分配:
Movie newMovie;
cout << "\nEnter the next movie title: ";
cin >> newMovie.title;
答案 2 :(得分:1)
Movie newMovie;
cout << "\nEnter the next movie title ";
cin >> newMovie.title;
会做的伎俩