История изменений
Исправление SZT, (текущая версия) :
Не, там все же есть 4.2
В частности
1)
Копирование регионов памяти — гарантированно безопасная операция. (далее идет пример с memcpy)
Фиг там. Если вы используете memcpy(не memmove) и вы им копируете память из пересекающихся регионов, вы получите UB.
2)
Корректное решение номер два — использование char*
Открываем http://cellperformance.beyond3d.com/articles/2006/06/understanding-strict-ali... и читаем
The converse is not true. Casting a char* to a pointer of any type other than a char* and dereferencing it is usually in volation of the strict aliasing rule.
Это написано относительно C, но в крестах я думаю будет то же самое.
Насчет использования union, тут скорее всего он прав.
Исходная версия SZT, :
Не, там все же есть 4.2
В частности
1)
Копирование регионов памяти — гарантированно безопасная операция.
Фиг там. Если вы используете memcpy(не memmove) и вы им копируете память из пересекающихся регионов, вы получите UB.
2)
Корректное решение номер два — использование char*
Открываем http://cellperformance.beyond3d.com/articles/2006/06/understanding-strict-ali... и читаем
The converse is not true. Casting a char* to a pointer of any type other than a char* and dereferencing it is usually in volation of the strict aliasing rule.
Это написано относительно C, но в крестах я думаю будет то же самое.
Насчет использования union, тут скорее всего он прав.