Ошибка отладки: недопустимые итераторы - PullRequest
1 голос
/ 22 марта 2012

В настоящее время я работаю на симуляторе и обнаружил следующую ошибку во время выполнения отладки: Выражение: несовместимые с вектором итераторы

Код выглядит следующим образом:

    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
        }

Есть ли обходной путь? Любая помощь / предложение / ссылка будет очень ценится.

Sebi

1 Ответ

1 голос
/ 22 марта 2012

Ваш указатель указывает на объект стека.Хотя это не очевидно в вашем коде, вполне вероятно, что у вас есть несколько указателей в векторе узлов, которые были восстановлены.Выше:

Node * acurrent = new Node (regex_d [1]);

сделает по крайней мере проблемы с памятью более точными.

Что касается проблем, которые выВозможно, место в памяти было использовано для чего-то другого, в результате чего указатель указывал на совершенно другой объект, чем на Узел.

...