Ошибка удаления элемента линейного связного списка

Суть проблемы заключается в том, что при попытке удаления элемента линейного связного списка, мне открывается какой-то файл(я не особо пока понимаю что это) и указывает на эту часть кода:

    // MEMBER FUNCTIONS FOR _Container_base12
    inline void _Container_base12::_Orphan_all() noexcept {
    #if _ITERATOR_DEBUG_LEVEL == 2
         if (_Myproxy) { // proxy allocated, drain it
            _Lockit _Lock(_LOCK_DEBUG);

            for (auto _Pnext = &_Myproxy->_Myfirstiter; *_Pnext; *_Pnext = (*_Pnext)->_Mynextiter) {
               (*_Pnext)->_Myproxy = nullptr;
            }

            _Myproxy->_Myfirstiter = nullptr;
        }
    #endif // _ITERATOR_DEBUG_LEVEL == 2
    }

Сама задача заключается в следующем, имеется два вида узла:

    struct illnes {
        int code_illnes = 0;
        illnes* next_illnes = nullptr;
        string date_registration;
    };

    struct patient {
        string second_name;
        number medical_policy = 0;
        patient* next_patient = nullptr;
        illnes* illnes_list = nullptr;
    };

И нужно реализовать удаление уже готового линейного связного списка по коду болезни у одного из пациентов. Суть структуры линейного списка - у пациента лежит указатель на начало списка заболеваний где у первого и второго имеются данные указанные выше.

Вот функция, которая удаляет элемент. Строки, удаляющие элементы выделены:

    void delete_code_illnes(patient*& group_1, int code_illnes, number medical_policy)
    {
        patient* p = find_patient(group_1, medical_policy);
        illnes *i1 = nullptr, * i2 = nullptr, *i3 = nullptr;
        i1 = p->illnes_list;
        while (i1->next_illnes->code_illnes != code_illnes)
        {
            i1 = i1->next_illnes;
        }
        if (i1->next_illnes->code_illnes == code_illnes)
        {
            i2 = i1->next_illnes->next_illnes;
            'delete[] i1->next_illnes;'
            i1->next_illnes = i2;
        }
        else if (i1->next_illnes == nullptr)
        {
            'delete[] i1->next_illnes;'
            i1->next_illnes = nullptr;
        }
        else
        {
            'delete[] i1;'
        }
    }

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