将元素添加到指针向量时的分割故障



我有一个具有元素向量和图形元素的类,该元素定义了这些元素之间的相邻:

class Graph
{
     Public:
     Graph::update(const Data& data);
     [...]
     private:
            std::vector<Node> nodeList;
            Node* root;
     [...]
}
Graph::update(const Data& data)
{    
    int n=3;
    std::vector<Node*> newNodes;
    nodeList.push_back(Data(parameters1));
    nodeList.push_back(Data(parameters2));
    nodeList.push_back(Data(parameters3));
    size=nodeList.size();
    for(int i=0;i<n;i++)
        newNodes.push_back(&(nodeList[size-i-1]));
    node->addChildren(newNodes,n);
}

图形结构是递归的:

class Node
{
     public:
     [...]
     void addChildren(std::vector<Node*> nodes,int& n);
     [...]
     private:
          std::vector<Node*> children;
          std::vector<Data> data;
          std::vector<Node*> brothers;
     [...]
}

这里有问题的方法:

void Node::addChildren(std::vector<Node*> nodes, int& n)
{
    for(int i=0;i<n;i++)
    {
         children.push_back(nodes[i]);
    }
}

即使我尝试插入函数范围中创建的空指针或元素,

函数addChildren也会产生分割故障。调试器停止在" newallocator.h"文件中,由push_back

使用

我看不到函数 addChildren的错误,所以我假设您的问题在调用该函数的node实例中。无论是正确创建并且尚未被销毁还是移动,它在代码提取物中都不可见。

如果您的node指针没有指向现有对象,则可以解释分段故障。

相关内容

  • 没有找到相关文章

最新更新