Andrei
Хотя он всё равно может быть валидным.
Andrei
Если одновременно поехали begin и end
Andrei
Я вызываю pop_back только после push_back
Тогда нужен код с пруфами.
Andrei
Ах да, а еще конечно многопоточка.
Andrei
Я ставлю 100 к 1 что это ошибка в STL
Andrei
И 1 к 100 что у тебя.
Andrei
Я один раз в жизни нашел ошибку в STL и один раз в имплементации POSIX-а в одной операционке
Andrei
И они проявлялись гораздо изощренее.
Andrei
Выкини весь лишний код. потихоньку отрезай куски программы, пока проблема продолжает повторяться.
Andrei
В итоге ты локализуешь её.
Andrei
My guess — сломанный вектор.
Andrei
(или многопоточка, если она есть)
Evgenii
спасибо)
Andrei
Еще могу посоветовать следующее.
Andrei
Сделай структуру со статическим полем count
Andrei
Которая в деструкторе и конструкторе пишет его и еще в конструкторе инкрементит
Andrei
И посмотри нет ли проблемы.
Andrei
Потому что я не верю в push_back и pop_back следом за ним.
В силу Господню
Andrei
Если это NDA то он скорее всего не может
Andrei
И нет, блоки не помогут, я думаю проблема в логике.
Andrei
А значит нужны все внешние бранчи тоже.
Andrei
Не всегда.
Andrei
Тоже задумался.
Andrei
Но != едва ли что-то испортить может.
Andrei
Если не влияет на push pop
Evgenii
Сравниваю что не равен переданному в функцию вектору
Andrei
Это не поэлементное сравнение, если что.
Evgenii
Потому что я не верю в push_back и pop_back следом за ним.
Печатаю размер до/после pop, начинает фейлить end равен самому себе когда размер вектора 6, причем до pop
Evgenii
http://en.cppreference.com/w/cpp/container/vector/operator_cmp
Andrei
Да.
Evgenii
Да какой блок? Нет никакого кода связанного с вектором кроме этого. Весь код выкладывать не хочу и смысла нет. Выложу минимальный пример когда получу его
Andrei
Печатаю размер до/после pop, начинает фейлить end равен самому себе когда размер вектора 6, причем до pop
Сумбурное описание, но может еще быть так, что если вектор — поле какой-то структуры, то умерла владеющая им структура или на её место что-то записали.
Andrei
или std::endl
Andrei
Хотя если писать в std::cerr сразу, то это не буфферизируется
Andrei
Её деструктора скорее всего никто не вызывал.
Andrei
Просто на её место что-то записали. Ну короче я на 99% уверен, что это ub, связанное либо с pop_back() либо с любым другим способом испортить вектор.
Andrei
Но мне ваще платили большие деньги, чтобы я с таким разбирался, а тут даже кода нет :3
Andrei
Поэтому ждем примера или suit yourself.
Jumpcode
Подскажите чат проганья под windows? или это он и есть?
Andrei
Задавай вопрос.
Крылатый
http://www.bfilipek.com/2017/01/cpp17features.html
Jumpcode
Задавай вопрос.
почему EPROCESS находится на nonpaged странице?
Square
коллеги, обьясните тупому, почему в строке std::for_each(std_map.begin(), std_map.end(), [](auto s) {delete s.second; s.second = nullptr; }); auto s имеет тип std::pair а не std::map::iterator
Square
я просто не люблю ключевое слово auto и сначала написал там полный тип шаблонный - а оно, собака, не билдится
Vladislav
http://en.cppreference.com/w/cpp/algorithm/for_each
Square
посыпаю голову пеплом
Square
"f - function object, to be applied to the result of dereferencing every iterator in the range"
привык к мсдну: Return Value A copy of the function object after it has been applied to all of the elements in the range.
Square
бляха
Aidar
Мсдн мсдно
Vladislav
в c++11 не копия а std::move от него)
babysitter
я тоже очнулся уже на cppreference
Aidar
Я думал там типа универсальный ссылок
Aidar
Или как оно нормально называется
Square
Я думал там типа универсальный ссылок
да я там и так и сяк крутил вертел этот итератор
Aidar
Там не итератор потому что а дереференс его
Square
да я понял уже
Square
я просто гляжу в мсдн и невдупляю
Aidar
Не гляди тула
Square
спасибо
Крылатый
Читай стандарт!)
Крылатый
// и имплементацию
Aidar
.clear и все
Aidar
Сами деструкторизируются
Aidar
Думаю ему пофигу тут
Vladislav
++
Aidar
Думаю это не хэш таблица
Aidar
А обычная мапа
Aidar
Сортированная
Aidar
Дерево тобишь
Aidar
std::map
Aidar
Нк
Aidar
Ну
Aidar
Хэши? Где?