Size: a a a

2021 July 07

K

Kelbon in pro.cxx
я ответил на выше комментарий, что это обрабатывается нормально
источник

VD

Vlad Doc in pro.cxx
Но это возможно только если ты стрёмный указатель передашь. Например указатель на поле объекта
источник

VD

Vlad Doc in pro.cxx
Ты не понял
источник

VD

Vlad Doc in pro.cxx
memmove обрабатывает диапазоны для памяти
источник

VD

Vlad Doc in pro.cxx
Но процесс копирования внутри объекта не значит что не будет уб
источник

АХ

Александр Хутиев... in pro.cxx
memmove смотрит какой указатель меньше и в зависимости от этого копирует с начала или конца. Если интересно, напиши в лс, пришлю свою старую реализацию обеих функций в Си
источник

VD

Vlad Doc in pro.cxx
memmove(&obj, &obj.field, sizeof(obj));
Всё ок?
источник

K

Kelbon in pro.cxx
чет нет
источник

VD

Vlad Doc in pro.cxx
Ну я об этом же
источник

VD

Vlad Doc in pro.cxx
Если второй указатель в пределах объекта то уб
источник

АХ

Александр Хутиев... in pro.cxx
только для memcpy, для memmove все сработает, так как он начнет копирование с конца.
источник

SS

Sergey Sobolev in pro.cxx
Как-то слишком сложно мысль донесена
источник

АХ

Александр Хутиев... in pro.cxx
исходный объект испортится, но с новым все ок будет, он скопируется корректно
источник

АР

Андрей Руссков... in pro.cxx
ну ты какой-то шибко радикальный пример привел, причем он не обязательно UB
источник

VD

Vlad Doc in pro.cxx
А то что исходный испортился не уб?) Деструктор то ещё будет вызываться
источник

BU

Boris Usievich in pro.cxx
вот зачем так вообще делать?
источник

АР

Андрей Руссков... in pro.cxx
например для struct { int i; int field; } он даже не будет UB содержать
источник

АР

Андрей Руссков... in pro.cxx
во-вторых, проблема в том, что ты немножко не то под объектом понимаешь. В твоем случае объектом будет не obj, а obj.field
источник

BU

Boris Usievich in pro.cxx
Знаете мало способов выстрелить себе в ногу, хочется еще один?
источник

SS

Sergey Sobolev in pro.cxx
Вообще, я не очень понимаю, в чем плюс копирования с конца? Там memcpy внутри sse, avx и прочее юзает, за одну инструкцию сразу блок копирует большой и этот блок как раз может пересечься с dest. В этом суть ограничения с пересечением областей
источник