删除其中的一个元素,却得到分割错误
Getting segmentation fault while removing one element in it
这是一个代码,将删除一个演员在一个cast。我在电影和演员之间建立了联系。这段代码检查movie是否存在然后它查找它的Cast当它找到我们要找的演员时它删除它。然而,虽然这段代码对我来说似乎很合理,但我得到了分割错误。原因是什么,在这种情况下我们应该注意什么来避免段故障?
在
if( c-> next -> name == actorFirstName && c -> next -> lastName == actorLastName)
假设c->next不是NULL,但是循环只确保c不是NULL。
就像DrC说的,"下一步"是错误的。试试这个:
void MovieDatabase:: removeActor( const string movieTitle, const string actorFirstName, const string actorLastName )
{
for(Movie* m= headMovie; m != NULL; m = m-> next){
if(m-> title == movieTitle && m -> headCast !=NULL){
for(Cast* c = m -> headCast; c != NULL; c= c-> next){
if( c -> name == actorFirstName && c -> lastName == actorLastName){
Cast* temp = c-> next;
delete c;
c = temp;
}
}
}
}
}
相关文章:
- 从矢量中删除元素后出现隔离错误
- 删除映射和分割错误中的一个过去结束元素
- 在 alglib::real_1d_array 中获取元素总和的奇怪错误
- C++ - 将元素按升序插入数组的 SEG 错误
- 使用 <list> (错误 C2760) 打印队列的元素
- C++:使用类在向量中搜索特定元素时,我得到了错误的结果
- 用于查找数组中最大元素的出现次数的代码,给出分段错误
- C++ 将元素分配给映射值时访问错误
- 从加密项目向量中解密任意选择的元素会导致无效的 PKCS #7 块错误
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- Leetcode 540 上的运行时错误.排序数组中的单个元素
- std::我不明白的矢量元素错误
- 如何修复从矢量中删除元素的错误?
- 为什么我在对向量的第二个元素"push_back"中有C3867错误
- 尝试访问 3D 矢量中的元素时出现 Seg 错误
- OpenCV 文件存储 - 错误:元素之间的解析错误 (icvYMLParseValue) 缺失
- 访问range_expression中的嵌套元素会返回不完整的映射(段错误)
- 打印向量元素错误消息
- 数组中的cout元素错误,错误
- 迭代并移除Vector中的元素.错误:Vector迭代器不可递增