当试图进入字符串时,分段错误?

时间:2014-01-30 09:24:21

标签: c++ segmentation-fault

你需要帮助解决这个分段错误,不知道为什么我会得到它

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

3 个答案:

答案 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;

会做的伎俩