分段错误我无法弄清楚

Itz*_*984 0 c++ error-handling

我有以下构造函数:

    Timing::Timing():
    _numMes(INIT_NUMMES),_msgs(new allMSgs*[NUMBER_OF_MSGS])
    {

        cout<<"build timing OK\n";
    }
Run Code Online (Sandbox Code Playgroud)

allMSgs是一个结构:

   typedef struct AllMSgs
   {
            double msg;
        Agent* dedicatedTo;
   }allMSgs;
Run Code Online (Sandbox Code Playgroud)

它的声明是这样完成的:

        allMSgs** _msgs;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试像这样到达阵列中的一个字段时:

     _msgs[loc]->dedicatedTo=agent->getPointsTo();
Run Code Online (Sandbox Code Playgroud)

我得到了分段错误.

NUMBER_OF_MSGS是1000

loc是0,1,2 ....(小于1000);

请帮忙

Fle*_*exo 5

你已经制作了一个指针数组,但没有将它们设置为指向任何有效的指针.你要么需要改变它是简单的:

allMSgs* _msgs;
Run Code Online (Sandbox Code Playgroud)

和:

new allMSgs[NUMBER_OF_MSGS]
Run Code Online (Sandbox Code Playgroud)

或者为allMSgs数组中的每个指针调用new .

更好的是你可以使用一个std::vector或其他容器,std::vector<allMSgs> _msgs;你可以使用它,就像在大多数情况下它是一个数组.你也可以用尺寸来推销它.