170 похожих чатов

Я тут наткнулся на очень странную ошибку есть в кратце то,

есть вектор умных указателей на класс А
_result = vector<shared_ptr<A>>;
нужно удалить все классы из ветора по по условию(ограничен с++14), делал так:

for (auto iter = _result.begin(); iter != _result.end(); ) {
auto pointer = *iter;
auto a = *pointer;
if (a.getValue() == value) {
iter = _result.erase(iter);
} else {
iter++;
}
}

получил сегфолт
типа не гоже вызывать 2 раза подряд на один и тот же класс А деструктор

перестало падать когда написал так:
for (auto iter = _result.begin(); iter != _result.end(); ) {
if ((**iter).getValue() == value) {
iter = _result.erase(iter);
} else {
iter++;
}
}

почему так ?

7 ответов

2 просмотра

У вас там класс копируется и копия разрушается. Наверное у вас там деструктор криво написан

Слава
У вас там класс копируется и копия разрушается. На...

в деструкторе сделал printf и увидел что два раза вызывается

Andrey Morozov
в деструкторе сделал printf и увидел что два раза ...

На одном и том же объекте? Или на разных?

на одном и том же

Andrey Morozov
на одном и том же

это ты по адресу this проверил?

Mikail Bagishov
это ты по адресу this проверил?

нет, сейчас перепроверил на this - разные, походу начинаю понимать вчем проблема

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
а как ловят такое ghci> res <- getPos2 urlt 0 (alist !! 0) 200 ghci> res SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:...
Fedor
14
Есть вопрос: допустим есть железка с каким-то интерфейсом(допустим usb), но как по этому интерфейсу железкой управлять неизвестно, прог нету, а управлять очень хочется надо. К...
Mixail Frolov
15
Карта сайта