【发布时间】:2020-02-04 01:24:12
【问题描述】:
所以我有这个
void MovieGroup::add(Movie* m)
{
cout << "Size = " << size << endl;
if(size < MAX_COLLECTION){
if(size == 0){
collection[0] = m;
}
else{
for(int i = 0; i<size; i++){
if(collection[i]->getYear() >= m->getYear()){
for(int j = size-1; j != i; j--){
collection[j] = collection[j-1];
}
collection[i] = m;
break;
}
else{
collection[size] = m;
}
}
}
size++;
}
}
每次我尝试运行它时,都会出现分段错误。这样做的目的是向该集合中添加一个电影对象,但按年份排序。我真的不确定我在哪里非法访问内存。对此的任何帮助将不胜感激。
附加信息:MAX_COLLECTION 设置为 64,我试图从数组的后面开始将每个对象移动 1
【问题讨论】:
-
调试器在哪里说发生了分段错误?这可能会给你一个线索。
collection[size] = m这行看起来很可疑。 -
Edit 包含minimal reproducible example 的问题:
MovieGroup类的部分定义,包括构造函数以及collection和size成员变量。