矢量push_back投掷sigabrt错误

时间:2013-09-09 18:46:17

标签: c++ vector

我在std::vector::push_back中使用for-loop,当我添加if条件时,它开始发出错误。

if(p>0) a[p]->vec.push_back(i)

其中a是包含向量等结构的结构。

错误似乎并不取决于条件。

struct link
{
    vector<int>children;  
    int noOfchildren;  
     struct link * parent;  
}
typedef struck link * node;




for(i=1;i<=n;i++)
    {
            a[i]=(node)malloc(sizeof(element));
            scanf("%d",&p);
            a[i]->parent=a[p];
            a[i]->noOfchildren=0;
            if(p>0)
            a[p]->children.push_back(i);

    }  

a [0]早先初始化。

1 个答案:

答案 0 :(得分:4)

您正在使用malloc分配未初始化的内存。因此,children也未初始化。在其上调用push_back是UB。

使用a[i] = new link();