【发布时间】:2014-05-14 14:52:54
【问题描述】:
我已经初始化了一个迭代器,并将该迭代器分配给列表的开头,以通过以下方式迭代容器。
std::list<ptr*> list_var;
std::list<ptr*>::iterator iter = NULL;
iter = list_var.begin();
但神秘的是,执行第 3 行 {iter = list_var.begin();} 时会发生分段错误。 此时可能导致崩溃的原因是什么?
【问题讨论】:
-
很多事情。 您的代码的某些其他部分可能已经损坏了堆,或者以其他方式触发了未定义的行为。该错误可能只是其他地方发生的问题的表现。
-
拥抱 C++11。使用
nullptr,而不是NULL。不要将任何一个分配给您的迭代器实例。此外,auto保持迭代器代码整洁:auto iter = list_var.begin(); -
请显示一些实际代码,您在问题中的代码甚至不应该编译!
标签: c++ iterator containers coredump