Вызвано исключение: нарушение доступа для чтения. _Pnext было 0xDDDDDDE1

Есть следующая программа, состоящая из трёх файлов:

main.cpp:

#include <iostream>
#include <string>
#include "Osnova.h"

using namespace std;

int main()
{
    string root, parent, name;
    cin >> root;
    cl_base2* ob = new cl_base2(0, root);
    cl_base* ob_root = ob;
    cl_base2* temp = 0;
    for (int i = 0; ; i++)
    {
        cin >> parent >> name;
        if (parent == name)
            break;
        if (i != 0 && ob->get_object_name() != parent)
            ob = temp;
        temp = new cl_base2(ob, name);
    }
    cout << ob_root->get_object_name() << endl;
    ob_root->showtree();
    delete ob_root;
    delete temp;
    return(0);
}

Osnova.h:

#ifndef OSNOVA_H
#define OSNOVA_H
#include <iostream>
#include <vector>
#include <string>

using namespace std;

class cl_base
{
    string object_name;
    cl_base* p_parent;
public:
    cl_base(cl_base* p_parent, string s_object_name);
    cl_base(cl_base* p_parent);
    ~cl_base();
    string get_object_name();
    void set_object_name(string name);
    void showtree();
    vector <cl_base* > children;
    vector <cl_base* > ::iterator it_child;
};

class cl_base1 : public cl_base
{
public:
    using cl_base::cl_base;
};

class cl_base2 : public cl_base
{
public:
    using cl_base::cl_base;
};

#endif

Osnova.cpp

#include <iostream>
#include "Osnova.h"

using namespace std;

cl_base::cl_base(cl_base* p_parent, string s_object_name)
{
    set_object_name(s_object_name);
    this->p_parent = p_parent;
    if (this->p_parent != 0)
        this->p_parent->children.push_back(this);
}

cl_base::cl_base(cl_base* p_parent)
{
    this->p_parent = p_parent;
}

cl_base::~cl_base()
{
    for (int i = 0; i < this->children.size(); i++)
    {
        delete this->children[i];
    }
}

void cl_base::set_object_name(string s_object_name)
{
    object_name = s_object_name;
}

string cl_base::get_object_name()
{
    return object_name;
}

void cl_base::showtree()
{
    cout << this->get_object_name();
    for (int i = 0; i < this->children.size(); i++)
    {
        cout << " " << this->children[i]->get_object_name();
    }
    for (int i = 0; i < this->children.size(); i++)
    {
        if (this->children[i]->children.size() != 0)
        {
            cout << endl;
            children[i]->showtree();
        }
    }
}

В среде Code::blocks программа компилируется и работает нормально. В visual studio она также компилируется, но при попытке заставить её работать вылетает с ошибкой, которую я написал в названии темы. В чём проблема? Данные на вход:

Object_root Object_root Object_1 Object_root Object_2 Object_root Object_3 Object_3 Object_4 Object_3 Object_5 Object_6 Object_6


Ответы (0 шт):