Существуют две разные функции для создания копии области данных в стандартной библиотеке C, memmove()
используется для перекрывающихся областей памяти и memcpy()
для непересекающихся, непересекающихся областей памяти.
Чтостандарты C говорят о присвоении структуры следующим образом:
struct thing myThing = {0};
struct thing *pmyThing = &myThing;
myThing = *pmyThing; // assign myThing to itself through a pointer dereference.
Соответствует ли присвоение структуры правилам memmove()
или memcpy()
или своим собственным правилам в отношении перекрывающихся областей памяти?