[英]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.