C++ 取消引用已初始化为list.begin的迭代器时收到segfault

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

取消引用已初始化为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 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++;
    }
}