我正在尝试将int值分配给对象属性。当我这样做时,就会发生分段错误。
我创建了一个setter函数,而不是立即尝试将其分配给公共财产,但这也导致了分段错误。
void list_item::set_value_1(int value)
{
this->value_1 = value;
}
...
void list::add(int value1, int value2)
{
list_item* insert_item = new list_item;
insert_item->next = nullptr;
insert_item = this->tail;
this->tail = new list_item;
this->tail = this->tail->next;
insert_item->set_value_1(value1);
insert_item->set_value_2(value2);
this->size++;
}
确切的错误消息是Signal: SIGSEGV (Segmentation fault)
,它确实出现在应该设置该值的那一行。
答案 0 :(得分:0)
我知道了:
我将insert_item
初始化为list_item
的新实例,但是用this->tail
覆盖了它,但是它是一个空指针。
答案 1 :(得分:0)
只是一个猜测
void list::add(int value1, int value2)
{
list_item* insert_item = new list_item;
insert_item->next = nullptr;
insert_item = this->tail; // <- this looks suspicious
this->tail = new list_item; // <- this one too
this->tail = this->tail->next;
insert_item->set_value_1(value1);
insert_item->set_value_2(value2);
this->size++;
}
的组合
insert_item = this->tail; // <- this looks suspicious
// ...
insert_item->set_value_1(value1);
导致分段错误。成员list::tail
可能此时尚未初始化。