在我的内存释放过程中,我的代码出现了一些问题。这是我遇到的错误:
.mat-drawer-side {
border: none;
}
如您所见,我收到了“ make it out”通知,但我的程序被冻结,并且不允许我执行任何操作。有什么想法吗?
答案 0 :(得分:3)
这是可怕的UB。您分配char
个长度为0
的数组,然后将数据轻轻输入其中:保证缓冲区溢出!
尝试使用string
而不是char[]
。它不仅可以处理动态长度,而且还使您摆脱了手动内存管理的职责。
bool LinkedList::addArtist(){
cout << "Enter artist name: ";
string name;
getline (cin, name); // allows blanks in string and ignores \n
...
this->addAtBeginning(name, topStory, description);
cout << "made it out" << endl;
return true;
}
如果其余代码以相同方式使用char
数组,则只需将所有内容重构为string
。但是,如果您有很多代码已经可以很好地与char数组配合使用并且真的不想碰它,那么您可以将string x;
作为const char*
参数传递给x.c_str()
。