我初始化了一个迭代器,并将迭代器分配给列表的开头,以下列方式迭代容器。
std::list<ptr*> list_var;
std::list<ptr*>::iterator iter = NULL;
iter = list_var.begin();
但神秘的是,当执行第3行{iter = list_var.begin();}时发生分段错误。 什么可能导致此时崩溃?
答案 0 :(得分:2)
使用迭代器的声明和初始化:
std::list<ptr*>::iterator iter = NULL;
你忘了在这里你实际上没有分配迭代器指向的地方(这是无处),而是分配给实际的迭代器对象实例。实际上,该代码甚至不应该编译!它不应该编译,因为编译器无法将整数值(这是{+ 1}}在C ++中,只是NULL
)转换为0
对象。