Size: a a a

Конференция C++ Russia

2020 May 20

AV

Alexey Veselovsky in Конференция C++ Russia
magras
На сколько я помню, в плюсах на любой объект можно смотреть как на набор char или byte, поэтому я не вижу здесь UB.
нет, нельзя
источник

AV

Alexey Veselovsky in Конференция C++ Russia
ты не можешь кастануть int* к char* без UB
источник

AV

Alexey Veselovsky in Конференция C++ Russia
точнее кастануть то можешь. а вот работать с получившимся - нет
источник

AV

Alexey Veselovsky in Конференция C++ Russia
и уж тем более наоборот - из char* к int*
источник

m

magras in Конференция C++ Russia
Alexey Veselovsky
ты не можешь кастануть int* к char* без UB
> AliasedType is std::byte, (since C++17)char, or unsigned char: this permits examination of the object representation of any object as an array of bytes.
источник

AT

Alexey Tkachenko in Конференция C++ Russia
УБ бывают разные...
источник

m

magras in Конференция C++ Russia
Alexey Veselovsky
и уж тем более наоборот - из char* к int*
Могу, если указатель изначально указывал на int:

> AliasedType and DynamicType are similar.
> AliasedType is the (possibly cv-qualified) signed or unsigned variant of DynamicType.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
magras
> AliasedType is std::byte, (since C++17)char, or unsigned char: this permits examination of the object representation of any object as an array of bytes.
а наоборот - нет. буфер из байтиков нельзя кастануть к массиву интов, даже если ты знаешь что там лежат инты и длина правильная
источник

m

magras in Конференция C++ Russia
Alexey Veselovsky
а наоборот - нет. буфер из байтиков нельзя кастануть к массиву интов, даже если ты знаешь что там лежат инты и длина правильная
Ну и главное, что это не имеет отношения к исходному топику.
источник

AS

Alexey Solomin in Конференция C++ Russia
magras
Мне кажется здесь вы не правы. Один unsafe на то чтобы скастить указатели и такая функция должна прекрасно работать в расте. Кажется даже лайфтаймы компилятор должен вывести самостоятельно. При этом в отличие от плюсов она не станет миной замедленного действия.
А в каком месте в плюсах приведённая мной строчка мина? У меня есть поиск "строк" по шаблону, строки есть обычные, а есть windows wide, вот чтобы искать набор байт той же функцией вне зависимости разбит он нулями или нет и нужна эта функция. Вообще этот код получился поскольку я сказал "ой всё" и грязно хакнул клиент uTorrent от скуки 😌 так няшно вышло что антивирусы в получившемся даже uTorrent как PUA не опознают 😅
источник

m

magras in Конференция C++ Russia
Alexey Solomin
А в каком месте в плюсах приведённая мной строчка мина? У меня есть поиск "строк" по шаблону, строки есть обычные, а есть windows wide, вот чтобы искать набор байт той же функцией вне зависимости разбит он нулями или нет и нужна эта функция. Вообще этот код получился поскольку я сказал "ой всё" и грязно хакнул клиент uTorrent от скуки 😌 так няшно вышло что антивирусы в получившемся даже uTorrent как PUA не опознают 😅
Легко допустить ошибку со временем жизни строки. Когда эта функция только что написана это не вызывает проблем. А вот через месяц я сам или стажер имеет неплохие шансы потерять ногу.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
string_view и лайфтайм - это всегда смешно. то есть сам по себе string_view это пистолет приставленный к ноге со взведенным курком. эта функция хуже ничего не делает.
источник

AS

Alexey Solomin in Конференция C++ Russia
magras
Легко допустить ошибку со временем жизни строки. Когда эта функция только что написана это не вызывает проблем. А вот через месяц я сам или стажер имеет неплохие шансы потерять ногу.
Я бы больше опасался велосипедов с ошибками и всякой мелочи вроде +-1 в коде чем беспокоился за время жизни объектов ибо время жизни хоть диагностировать есть чем.  Что же касается этого кода, то никто не запрещает не использовать string_view,  а по старинке копировать память если времени cpu и памяти (особенно кэшей) не жалко ☺️
источник

m

magras in Конференция C++ Russia
Alexey Solomin
Я бы больше опасался велосипедов с ошибками и всякой мелочи вроде +-1 в коде чем беспокоился за время жизни объектов ибо время жизни хоть диагностировать есть чем.  Что же касается этого кода, то никто не запрещает не использовать string_view,  а по старинке копировать память если времени cpu и памяти (особенно кэшей) не жалко ☺️
Не знаю, я уже не раз разбирал такие ошибки. Под linux, да, есть классные инструменты. Под виндой лет 5 назад это было больно.

Кроме того, asan не панацея. Взяли view от строки на стэке и все.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
magras
Не знаю, я уже не раз разбирал такие ошибки. Под linux, да, есть классные инструменты. Под виндой лет 5 назад это было больно.

Кроме того, asan не панацея. Взяли view от строки на стэке и все.
ASAN стек тоже чекает
источник

AV

Alexey Veselovsky in Конференция C++ Russia
приходи на cpprussia - расскажу 🙂
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
magras
Не знаю, я уже не раз разбирал такие ошибки. Под linux, да, есть классные инструменты. Под виндой лет 5 назад это было больно.

Кроме того, asan не панацея. Взяли view от строки на стэке и все.
Кстати, в крайнем Vs 16.7 улучшили работу ASAN
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Alex Ф-ф-фэils!🌠︙
Кстати, в крайнем Vs 16.7 улучшили работу ASAN
да? а оно всё еще только под вымершую платформу? x86 32bit?
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
Alexey Veselovsky
да? а оно всё еще только под вымершую платформу? x86 32bit?
Вот как раз крайний сегодня вышел на x64
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Alex Ф-ф-фэils!🌠︙
Вот как раз крайний сегодня вышел на x64
блин. надо срочно щупать!
источник