簡體   English   中英

我無法找出細分錯誤

[英]Segmentation fault i cant figure out

我有以下構造函數:

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

        cout<<"build timing OK\n";
    }

allMSgs是一個結構:

   typedef struct AllMSgs
   {
            double msg;
        Agent* dedicatedTo;
   }allMSgs;

它的聲明是這樣完成的:

        allMSgs** _msgs;

但是當我嘗試達到這樣的數組中的字段時:

     _msgs[loc]->dedicatedTo=agent->getPointsTo();

我遇到了細分錯誤。

NUMBER_OF_MSGS為1000

loc為0,1,2 ....(小於1000);

請幫助

您已經建立了一個指針數組,但尚未將它們設置為指向任何有效的指針。 要么需要將其更改為簡單:

allMSgs* _msgs;

和:

new allMSgs[NUMBER_OF_MSGS]

或為allMSgs數組中的每個指針調用new。

更好的是,盡管您可以僅使用std::vector或其他容器,並使用std::vector<allMSgs> _msgs; ,您可以在大多數情況下像使用數組一樣使用它。 您也可以使用大小來初始化它。

您只分配了數組本身。 您還需要分配數組的每個項目。 在構造函數中,添加一個for循環,該循環分配所有項目。

for (int i = 0; i < NUMBER_OF_MSGS; i++)
  _msgs[i] = new allMSgs();

您也可以僅將數組定義為allMSgs的數組,而不是將指針定義為allMSgs

allMSgs* _msgs;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM