0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 7
|
|||||||||||
1 | |||||||||||
Ошибка при вызове деструктора09.08.2018, 14:56. Показов 1190. Ответов 14
Метки нет (Все метки)
Здравствуйте, помогите разобраться с проблемой, она довольно распространенная и на форуме куча сообщений про это но в моей программе я никак не могу найти где я ошибся, нужен ваш взгляд со стороны.
Вот код:
0
|
09.08.2018, 14:56 | |
Ответы с готовыми решениями:
14
Ошибка при вызове деструктора (при вызове delete в деструкторе) Ошибка при вызове деструктора Ошибка при вызове деструктора Ошибка при вызове деструктора |
Форумчанин
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||||||||||
09.08.2018, 15:23 | 2 | ||||||||||
Проверьте написание оператора присваивания
А ещё выкиньте строки
2. sizeof(m_vector) - размер указателя. 3. В С++ используют std::fill
1
|
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 7
|
|
09.08.2018, 15:36 [ТС] | 3 |
Внес предложенные вами изменения, не помогло.
Кстати почему Release версия не ругается? Я так понимаю очистка памяти возлагается на ОС?
0
|
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
|
||||||||||||||||
09.08.2018, 15:38 | 4 | |||||||||||||||
Сообщение было отмечено Rastrizh как решение
Решение
Не забываем очищать массивы перед очисткой указателя.
1
|
Модератор
13678 / 10888 / 6465
Регистрация: 18.12.2011
Сообщений: 29,055
|
|
09.08.2018, 15:38 | 5 |
Выделяем память размером m_size
А заполняем m_len элементов. Если m_len>m_size, то приплыли...
0
|
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
|
|
09.08.2018, 15:43 | 6 |
По логике m_len не должна быть больше чем m_size. Вот только в методе push_back ошибка, из-за которой m_size не увеличивается корректно.
1
|
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 7
|
|
09.08.2018, 15:57 [ТС] | 7 |
QuakerRUS, я внес изменения которые вы предложили, и все равно вылазит ошибка
0
|
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
|
|
09.08.2018, 15:59 | 9 |
Rastrizh, у меня без ошибок работает. Покажите весь код, который у вас сейчас получился.
0
|
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 7
|
||||||
09.08.2018, 16:00 [ТС] | 10 | |||||
Вот так сейчас выглядит код:
0
|
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
|
|
09.08.2018, 16:06 | 11 |
Rastrizh, вы неправильно вставили те фрагменты, которые я вам написал. Откуда, например, 22я строка?
Добавлено через 2 минуты В operator= тоже строки не хватает из моего кода.
1
|
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 7
|
||||||
09.08.2018, 16:07 [ТС] | 12 | |||||
В оператор присваивания не вставил строку:
0
|
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
|
|
09.08.2018, 16:09 | 13 |
Rastrizh, 22ю строку не забудьте удалить, иначе у вас утечка памяти будет.
0
|
09.08.2018, 16:35 | 14 |
имелось в виду очищать память m_vector в конструкторе? Ну зачееем? Конструктор он гарантированно создаёт новый объект, под поля которого память до этого никакая не выделялась!
1
|
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
|
|
09.08.2018, 16:41 | 15 |
Kuzia domovenok, да, это я затупил что то, спасибо.
Добавлено через 3 минуты Rastrizh, конструктор vec(const vec& orig) у вас изначально правильный был, проверка на непустоту m_vector там лишняя, извиняюсь за дезынформацию.
0
|
09.08.2018, 16:41 | |
09.08.2018, 16:41 | |
Помогаю со студенческими работами здесь
15
Ошибка при вызове деструктора Ошибка при вызове деструктора Ошибка при вызове деструктора При вызове деструктора возникает ошибка Debug Assertion Failed! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |