std :: list.begin()上的分段错误

时间:2014-05-14 14:52:54

标签: c++ iterator containers coredump

我初始化了一个迭代器,并将迭代器分配给列表的开头,以下列方式迭代容器。

std::list<ptr*> list_var;
std::list<ptr*>::iterator iter = NULL;
iter = list_var.begin();

但神秘的是,当执行第3行{iter = list_var.begin();}时发生分段错误。 什么可能导致此时崩溃?

1 个答案:

答案 0 :(得分:2)

使用迭代器的声明和初始化:

std::list<ptr*>::iterator iter = NULL;

你忘了在这里你实际上没有分配迭代器指向的地方(这是无处),而是分配给实际的迭代器对象实例。实际上,该代码甚至不应该编译!它不应该编译,因为编译器无法将整数值(这是{+ 1}}在C ++中,只是NULL)转换为0对象。