LINUX.ORG.RU

История изменений

Исправление 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, тут скорее всего он прав.