C++ 取消引用已初始化为list.begin的迭代器时收到segfault
取消引用已初始化为list.begin()的迭代器时,我遇到一个segfault 以及vp的定义:C++ 取消引用已初始化为list.begin的迭代器时收到segfault,c++,list,stl,iterator,segmentation-fault,C++,List,Stl,Iterator,Segmentation Fault,取消引用已初始化为list.begin()的迭代器时,我遇到一个segfault 以及vp的定义: typedef struct { int size; int pid;//prosdiorisths diergasias }vp 和n的值:n=10 list\u empty的声明为list*list\u empty这对我很有用: #include <list> using std::list; const int n = 10; typedef st
typedef struct {
int size;
int pid;//prosdiorisths diergasias
}vp
和n的值:n=10
list\u empty的声明为list*list\u empty这对我很有用:
#include <list>
using std::list;
const int n = 10;
typedef struct {
int size;
int pid;//prosdiorisths diergasias
}vp;
typedef struct data{
int position;
vp process;
int delay;
int current_life;
int time_start;
int time_stop;
int part_of_memory;
bool operator ==(const data& st)
{
return process.pid == st.process.pid;
}
}data;
int main()
{
list<data>* list_empty = new list<data>[n];
list<data>::iterator it;
for(int i=0; i< n; i++)
{
it = (list_empty[i]).begin();
while(it != (list_empty[i]).end())
{
cout<<"PROBLEM HERE: size="<<it->process.size<<endl;
//cout<<"log file i="<<i<<endl;
//log_file_start(current_time, it,"list of empty");
it++;
}
}
}
#包括
使用std::list;
常数int n=10;
类型定义结构{
整数大小;
int-pid;//prosdiorisths diergasias
}副总裁;
typedef结构数据{
内部位置;
vp过程;
整数延迟;
int当前_生活;
int time_开始;
int time_stop;
内存的int部分;
布尔运算符==(常量数据和st)
{
返回process.pid==st.process.pid;
}
}数据;
int main()
{
list*list_empty=新列表[n];
列表::迭代器;
对于(int i=0;i 不能什么是it
it_empty = new list<data>::iterator[n];
for(int i=0; i< n; i++)
{
auto it = (list_empty[i]).begin();
while(it != (list_empty[i]).end())
{
cout<<"PROBLEM HERE: size="<<it->process.size<<endl;
//cout<<"log file i="<<i<<endl;
log_file_start(current_time, it,"list of empty");
it++;
}
}
it_empty=新列表::迭代器[n];
对于(int i=0;i 什么是list\u empty
?它看起来像list\u empty[8]
不是有效的std::list
对象。它是如何创建的,以及在创建和此代码之间发生了什么?还有,n
来自哪里?list\u是空的吗?它是某种容器的容器吗?为什么需要一个未使用的it\u空变量?这是您的真实代码吗?@JohnKugelman:我添加了list_empty,很抱歉遗漏了。list::iterator it;@user2008313:好的。很好。你到底是用什么代码出错的?现在还可以吗?还是仍然坏了?
typedef struct data{
int position;
vp proccess;
int delay;
int current_life;
int time_start;
int time_stop;
int part_of_memory;
bool operator ==(const data& st)
{
return proccess.pid == st.proccess.pid;
}
}data;
typedef struct {
int size;
int pid;//prosdiorisths diergasias
}vp
#include <list>
using std::list;
const int n = 10;
typedef struct {
int size;
int pid;//prosdiorisths diergasias
}vp;
typedef struct data{
int position;
vp process;
int delay;
int current_life;
int time_start;
int time_stop;
int part_of_memory;
bool operator ==(const data& st)
{
return process.pid == st.process.pid;
}
}data;
int main()
{
list<data>* list_empty = new list<data>[n];
list<data>::iterator it;
for(int i=0; i< n; i++)
{
it = (list_empty[i]).begin();
while(it != (list_empty[i]).end())
{
cout<<"PROBLEM HERE: size="<<it->process.size<<endl;
//cout<<"log file i="<<i<<endl;
//log_file_start(current_time, it,"list of empty");
it++;
}
}
}
it_empty = new list<data>::iterator[n];
for(int i=0; i< n; i++)
{
auto it = (list_empty[i]).begin();
while(it != (list_empty[i]).end())
{
cout<<"PROBLEM HERE: size="<<it->process.size<<endl;
//cout<<"log file i="<<i<<endl;
log_file_start(current_time, it,"list of empty");
it++;
}
}