Информация об изменениях

Сообщение проблема с memcpy на Linux от 29.05.2024 19:23

Изменено 29.05.2024 20:36 maks1180

проблема с memcpy на Linux
вызываю memcpy(dst, src, len), где src=dst+58, len=137. dst всегда кратен 16.
Т.е. диапазоны перекрываются, но так как src больше чем dst, поэтому я думал проблем ну будет.
Но вышла проблема, причём самое интересное, что проявляется переодически.
Заметил, что когда dst заканчивает на B0,С0,D0 проблема есть. Т.е. 3 из 16 раз.

Пытался посмотреть исходники memcpy, понял что он копирует вперёд (т.е. увеличивая поинтеры), но я не понял почему оно зависит от адреса dst и почему вообще проблему существует если идёт вперёд при копировании.
проблема с memcpy на Linux
вызываю memcpy(dst, src, len), где src=dst+58, len=137. dst всегда кратен 16.
Т.е. диапазоны перекрываются, но так как src больше чем dst, поэтому я думал проблем ну будет.
Но вышла проблема, причём самое интересное, что проявляется переодически.
Заметил, что когда dst заканчивается на D0,E0,F0 проблема есть. Т.е. 3 из 16 раз.

Пытался посмотреть исходники memcpy, понял что он копирует вперёд (т.е. увеличивая поинтеры), но я не понял почему оно зависит от адреса dst и почему вообще проблема существует если идёт вперёд при копировании.