Size: a a a

2020 June 04

ПК

Побитый Кирпич... in pro.cxx
Anatoly Tomilov
да нет. Здесь последнейший
Тогда не должно быть проблем хранить нормальный ключ
источник

AT

Anatoly Tomilov in pro.cxx
надо кастомный компаратор просто заводить, который разыменовывает сравниваемые указатели (если можно) и уже объекты сравнивает их компаратором
источник

AT

Anatoly Tomilov in pro.cxx
Побитый Кирпич
Тогда не должно быть проблем хранить нормальный ключ
маппинг в моём примере не может владеть этим объектом by design — он где-то в другом классе
источник

CD

Constantine Drozdov in pro.cxx
Anatoly Tomilov
маппинг в моём примере не может владеть этим объектом by design — он где-то в другом классе
связанные сущности должны быть связаны
источник

AT

Anatoly Tomilov in pro.cxx
Воистину
источник

IZ

Ilia Zviagin in pro.cxx
Anatoly Tomilov
Часто ли встречается на практике баг, когда в качестве ключа маппинга используется указатель на объект, но элемент маппинга не удаляется, когда объект удаляется. Создаётся новый объект и проверяется, есть ли для него в маппинге элемент. Иногда аллокатор переиспользует участок памяти старого, только что удалённого, объекта. Ему ставится в соответствие старое значение из маппинга. Вот здесь и случается крэш какой-нибудь. Прям антипаттерн какой-то — использовать в качестве ключа невладеющий указатель.
Вообще, это называется идиотизм....

Я думаю, он встречается, но нечасто.
источник

IZ

Ilia Zviagin in pro.cxx
Anatoly Tomilov
Часто ли встречается на практике баг, когда в качестве ключа маппинга используется указатель на объект, но элемент маппинга не удаляется, когда объект удаляется. Создаётся новый объект и проверяется, есть ли для него в маппинге элемент. Иногда аллокатор переиспользует участок памяти старого, только что удалённого, объекта. Ему ставится в соответствие старое значение из маппинга. Вот здесь и случается крэш какой-нибудь. Прям антипаттерн какой-то — использовать в качестве ключа невладеющий указатель.
То есть идиотизм -- достаточно массовое явление, но не часто оно пересекается с использованием std::map или аналогов.
источник

IZ

Ilia Zviagin in pro.cxx
Anatoly Tomilov
надо кастомный компаратор просто заводить, который разыменовывает сравниваемые указатели (если можно) и уже объекты сравнивает их компаратором
Компаратор не нужен, надо просто УДАЛЯТЬ из мапы, когда объект умирает.
источник

PK

Pavel Kazakov in pro.cxx
видел вот такой совет на стековерфлоу от какого-то старого инженера:
std::unordered_map<void*, void*> — что может быть лучше? ))
источник

PK

Pavel Kazakov in pro.cxx
(это в плюс к идиотизму, если что)
источник

AT

Anatoly Tomilov in pro.cxx
да. Такие любят перетирать на форумах о том, как они программировали в мохнатых годах IBM 360 и БЭСМ
источник

CD

Constantine Drozdov in pro.cxx
Pavel Kazakov
видел вот такой совет на стековерфлоу от какого-то старого инженера:
std::unordered_map<void*, void*> — что может быть лучше? ))
только std::unordered_map<void*, bool> разумеется
источник

AT

Anatoly Tomilov in pro.cxx
)) хех)
источник

PK

Pavel Kazakov in pro.cxx
Constantine Drozdov
только std::unordered_map<void*, bool> разумеется
красиво)))) спасибо
источник

m

magras in pro.cxx
Ilia Zviagin
То есть идиотизм -- достаточно массовое явление, но не часто оно пересекается с использованием std::map или аналогов.
Пару месяцев назад фиксил такой баг. Наоптимизировали воспользовавшись string_view, который указывал в контейнер, который в свою очередь при ресайзе менял адреса элементов. Код писал совсем не дурак, хотя у меня и есть некоторые разногласия с автором.
источник

IZ

Ilia Zviagin in pro.cxx
magras
Пару месяцев назад фиксил такой баг. Наоптимизировали воспользовавшись string_view, который указывал в контейнер, который в свою очередь при ресайзе менял адреса элементов. Код писал совсем не дурак, хотя у меня и есть некоторые разногласия с автором.
А у вас что было ключём?
источник

E

Evmenov Pasha ¯\_(ツ)... in pro.cxx
Добрый день.
Подскажите, как PVS-Studio подружить вместе Qt в cmake ???

Тк, при сборке, ошибка V008.
источник

OS

Oleksandr Senkovych in pro.cxx
А какие требования могут быть к структурам данных которые хранятся в shared memory? standard layout?
источник

OS

Oleksandr Senkovych in pro.cxx
Или is_trivially_copyable/copy_consgtructible/etc?
источник

IZ

Ilia Zviagin in pro.cxx
Как бы тут всё ясно -- язык гарантирует идентичность объекта уникальностью его адреса, все ОК, НО
объекты могут умирать, и могут появляться новые объекты с этим же адресом.

ЕСЛИ ты кладёшь в структуру объект, ТО надо следить за его временем жизни...
источник