Size: a a a

2020 June 05

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Хороший сайт
источник

m

magras in pro.cxx
Constantine Drozdov
Выход view класса из контекста функции требует строк пяти комментариев зачем это вообще надо и проверок, что используются неперемещающие контейнеры, коих в стд примерно 5. В идеале вообще нужно делать отдельный строковый класс и подавлять move конструкторы, потому что возможность синтезировать такие view дописывает невыражаемое в языке условие на деструктор
Я тут немного поэкспериментировал с враперами, но, на сколько я вижу, это почти никак не влияет на результат.

На самом деле, чтобы это работало нужно запретить практически все модифицирующие операции на строке. В том числе деструктор. Потому что даже если использовать враппер struct { const std::string s; } вектор при ресайзе просто скопирует его и удалит старый инстанс, оставив dangling string_view.
источник

CD

Constantine Drozdov in pro.cxx
magras
Я тут немного поэкспериментировал с враперами, но, на сколько я вижу, это почти никак не влияет на результат.

На самом деле, чтобы это работало нужно запретить практически все модифицирующие операции на строке. В том числе деструктор. Потому что даже если использовать враппер struct { const std::string s; } вектор при ресайзе просто скопирует его и удалит старый инстанс, оставив dangling string_view.
Конструкторы копирования можно использовать для "перемещения", которое логически ошибочно. Оба должны быть удалены
источник

VO

Vyacheslav Olkhovche... in pro.cxx
Oleksandr Senkovych
А вот еще вопрос. Допустим у меня в той же шаред памяти есть integer на котором я делаю atomic cas для синхронизации. Мне ведь не нужно его обьявлять как volatile?
Нужно
источник

m

magras in pro.cxx
Constantine Drozdov
Конструкторы копирования можно использовать для "перемещения", которое логически ошибочно. Оба должны быть удалены
В принципе, да, но без копирования это становится очень узко специализированным классом. В тот же вектор уже не положишь, а у нас был именно такой юз кейс. Здесь можно сказать, что это хорошо, так как спасло бы от ошибки еще на этапе компиляции, но на практике это означает что таким классом никто не будет пользоваться.
источник

CD

Constantine Drozdov in pro.cxx
magras
В принципе, да, но без копирования это становится очень узко специализированным классом. В тот же вектор уже не положишь, а у нас был именно такой юз кейс. Здесь можно сказать, что это хорошо, так как спасло бы от ошибки еще на этапе компиляции, но на практике это означает что таким классом никто не будет пользоваться.
Размещение цели view в векторе - ошибка, так что невозможность положить в вектор ожидаемое поведение
источник

m

magras in pro.cxx
Ну сейчас просто при ресайзе вектора перестраивается индекс. То есть все view уничтожаются и создаются с нуля. Это стремный костыль, но рабочий.
источник

AY

Alexey Yunushkin in pro.cxx
Anatoly Tomilov
ясно. Объект не может появиться, если не был вызван конструктор. Получается для случая разделяемой памяти придётся копировать объект в какую-то свою локацию в процессе, который его не создавал в этой разделяемой памяти
Было такое: при обращении к полям uint32_t после приведения даже к POD не выравненной памяти на ARM вылетал SIGBUS. Приходилось делать memcpy в локальную переменную. Подробнее https://stackoverflow.com/questions/19114491/structure-assignment-in-linux-fails-in-arm-but-succeeds-in-x86.
источник

DF

Dollar Føølish in pro.cxx
крутой случай
источник

DF

Dollar Føølish in pro.cxx
это изза UB?
источник

DF

Dollar Føølish in pro.cxx
или конкретно изза арма?
источник

AY

Alexey Yunushkin in pro.cxx
/proc/cpu/alignement
источник

AY

Alexey Yunushkin in pro.cxx
была бы большая просадка по производительности насколько я понимаю.
источник

AT

Anatoly Tomilov in pro.cxx
на AVR такое, помнится, было
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Dollar Føølish
или конкретно изза арма?
В арме раньше был невозможен невыровненный доступ
источник

AY

Alexey Yunushkin in pro.cxx
Artöm Bakri Al-Sarmini
В арме раньше был невозможен невыровненный доступ
источник

О

Олег Беляев... in pro.cxx
Ilia Zviagin
Потому что тебе в другой чат, тебе в суп.
@supapro
Не успел пройти анти-бот проверку, теперь не пускает (
источник

DF

Dollar Føølish in pro.cxx
Artöm Bakri Al-Sarmini
В арме раньше был невозможен невыровненный доступ
да, собственно поэтому и вопрос :) ключевое здесь UB или старый арм? :)
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Невыровненный доступ был и есть уб
источник

SK

Stas Koynov in pro.cxx
Dollar Føølish
да, собственно поэтому и вопрос :) ключевое здесь UB или старый арм? :)
и то и другое. в новых армах даже в милипизерных v7-m кортекс-м3 невыровненный доступ есть!
источник