【发布时间】:2019-09-08 11:51:22
【问题描述】:
在我的内存释放过程中,我的代码存在一些问题。这是我得到的错误:
bool LinkedList::addArtist(){
cout << "Enter artist name: ";
char *name = new char[0]();
cin >> name;
cin.ignore(1);
'/n';
cout << "Enter artists top story: ";
char *topStory = new char[0];
cin >> topStory;
cin.ignore(1);
'/n';
cout << "Enter artist description: ";
char *description = new char[0];
cin >> description;
cin.ignore(1);
'/n';
this->addAtBeginning(*&name, *&topStory, *&description);
cout << "made it out" << endl;
delete[] name;
delete[] topStory;
delete[] description;
return true;
}
如您所见,我收到“成功”通知,但我的程序被冻结并且不允许我做任何事情。有什么想法吗?
【问题讨论】:
-
完全不分配任何字符来存储您的输入是非常乐观的;你甚至不能在那里存储空字符串。这不可避免地会导致未定义的行为。
-
请提供文本信息,而不是文本图片。
-
*&name通常写成name,其他两个参数也是如此。 -
合理的编译器会在
'/n';的行上显示“警告:语句无效”。您是否希望那些打印换行符?
标签: c++ arrays string memory-management dynamic