繁体   English   中英

调试断言失败:迭代器无效

[英]Debug assertion failed: invalid iterators

我当前正在使用模拟器,并且在调试运行时遇到以下错误:表达式:向量不兼容的迭代器

代码如下:

    class Network {
    private:
             vector<Node*> nodes;
             ....
             void parse_config(void);
             ....
    };

在parse_config方法中,我有一个序列会产生错误。 就是这个:

    if(nodes.empty()) // add the first node to the network
        {
            Node current(regex_d[1]); // create current(first src) node
            Node *acurrent = &current;  

            Node next_hop(regex_d[2]); // create the node we immediately send to
            Node *anext_hop = &next_hop;

            acurrent->add_next_hop(anext_hop); 

            acurrent->add_n_vchannels(regex_d[5]);

            nodes.push_back(acurrent); // <== error
            nodes.push_back(anext_hop); // <== here as well
        }

有解决方法吗? 任何帮助/建议/参考将不胜感激。

塞比

您的指针指向堆栈对象。 尽管这在您的代码中并不明显,但很有可能在节点向量中有一些已被回收的指针。 在上面:

节点*当前=新节点(regex_d [1]);

至少会使内存问题更准确。

至于您遇到的问题,可能是内存位置被用于其他用途,导致指针指向与Node完全不同的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM