C ++ рдФрд░ рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ

memmove() C рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХрдИ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрдП рдЬреИрд╕реЗ memmove() memcpy() рдФрд░ memmove() , рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдУрд╡рд░рд▓реИрдк рд╣реЛрддреЗ рд╣реИрдВ (рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡рд░рд╣реЗрдб рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ)ред

C ++ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдХреЛрдИ рднреА рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд░рддрд╛ рд╣реИ (рдЕрдХреНрд╕рд░ рдпреЗ рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдХреВрд▓рди рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ C ++ рджреБрдирд┐рдпрд╛ рд╕реЗ рдЕрдкрдиреЗ рд╕рдордХрдХреНрд╖реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдореВрд▓ рдЙрдкрдХрд░рдг рднреА рд╣реИ: std::copy ред рдпрд╣ рдЙрдкрдХрд░рдг рди рдХреЗрд╡рд▓ POD рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд╛рдирдХ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрддрдиреЗ рдореВрд░реНрдЦ рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдЬрдм рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЕрдиреБрдХреВрд▓рд┐рдд memmove() / memmove() рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред

рд▓реЗрдХрд┐рди рдПрдХ рдХреВрдмрдбрд╝ рдкрд░, рдореИрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдХреНрд╖реЗрддреНрд░реЛрдВ (рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ) рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реИ? рдЖрдЦрд┐рд░рдХрд╛рд░, рдХрд╛рд░реНрдп, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдирд╛ рджреБрд░реНрд▓рдн рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо MPEG-TS рдкреИрдХреЗрдЯ (рдкреНрд░рддреНрдпреЗрдХ 188 рдмрд╛рдЗрдЯреНрд╕ рдЖрдХрд╛рд░ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЯ 0x47 / рд╕рд┐рдВрдХ рдмрд╛рдЗрдЯ /) рд╕реЗ рдХреБрдЫ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ (рдФрд░ рд╢рд╛рдпрдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо M2TS рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЬрд┐рд╕рдХрд╛ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ 192 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд 4 рдмрд╛рдЗрдЯреНрд╕ рд╣рдо рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ / рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк /) рдкрдврд╝рдирд╛ рдкреИрдХреЗрдЯ рдХреЗ рдмреАрдЪ рдореЗрдВ рдЧрд┐рд░ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╣рдо 188 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рдШрдЯрд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдмрд╛рдЗрдЯ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдпрд╣ рд╢реВрдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ - рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЗрд╕рдХреЗ рдЕрдВрдд рддрдХ рдХрд╛ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓рд╛рдкрддрд╛ рднрд╛рдЧ рдХреЛ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред , рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкреИрдХреЗрдЬ рдореЗрдВ рдХрдЯреМрддреА рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдмреНрд▓реЙрдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрд╕ рддрд╕реНрд╡реАрд░ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдЫрд╡рд┐

рдпрд╛рдиреА рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдУрд╡рд░рд▓реИрдк рд╣реИред memmove() рдХреБрдЫ рдПрдирд╛рд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХреЗрд╡рд▓ std::move рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЧрд▓рдд рд╣реИ (рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдореБрд╕реНрдХреБрд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, std :: copy рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд░рдг рдкрдврд╝рдиреЗ рдкрд░ , рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ:
рд╕реАрдорд╛рдПрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рд╣реЛрдВрдЧреА, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реАрдорд╛ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ [рдкрд╣рд▓рд╛, рдЕрдВрддрд┐рдо)ред


рдпрд╛рдиреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ (рдкрд░рд┐рдгрд╛рдо) рдХреА рд╢реБрд░реБрдЖрдд рдЬрд╣рд╛рдВ [рдкрд╣рд▓реЗ, рдЕрдВрддрд┐рдо) рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд╣рд░ рдЭреВрда рдХреА рдирдХрд▓ рдХрд░рдирд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВ рдпрд╣ рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рдХреЙрдкреА рд╕реНрдХреАрдо:
рдЫрд╡рд┐

рдЬрдм рддрдХ рд╣рдо рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдЕрдВрдд рдореЗрдВ рдпрд╣рд╛рдВ рд╣реИред рддрд╕реНрд╡реАрд░ рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреЛ рдХреНрд░рдорд╢рдГ рдХреБрдЫ рд╢рд┐рдлреНрдЯ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реБрдЖрдд рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрджрд┐ рдпрд╣ рд╢рд┐рдлреНрдЯ рд╢рд┐рдлреНрдЯ рдХрд┐рдП рдЧрдП рдмреНрд▓реЙрдХ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдЧрдВрддрд╡реНрдп рдХрд╛ рдкрддрд╛ [рдкрд╣рд▓реЗ, рдЕрдВрддрд┐рдо) рдХреЗ рднреАрддрд░ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ std::copy рд╕рдореНрдорд╛рди рдирд╣реАрдВред рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХреЗрд╡рд▓ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдЙрд╕рдХрд╛ рднрд╛рдИ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдмрд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ: std::copy_backward , рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреВрд░рд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрдд рд╕реЗ рдирдХрд▓ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рджреВрд╕рд░реА рддрд╕реНрд╡реАрд░ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕реЗ рддрддреНрд╡ (рдЖрдЧреЗ рдХреЗ рд▓рдЧрднрдЧ) рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ рдЕрдВрддрд┐рдо -рез рд╕реЗ рдкрд░рд┐рдгрд╛рдо -рез рддрдХ, рдлрд┐рд░ рдЕрдВрддрд┐рдо -реи рд╕реЗ рдкрд░рд┐рдгрд╛рдо -реи рддрдХ рдФрд░ рдЗрд╕реА рддрд░рд╣ред

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдирдХрд▓ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде, рдЬрдм рд╣рдо рдПрдХ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛рдиреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ рдХрд┐ std::copy_backward рд▓рд┐рдП рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ std::copy_backward рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП std::copy_backward рд╢рдмреНрдж рдЗрд╕ рд╢рд░реНрдд рдХреЛ std::copy рд▓рд┐рдП рджреЛрд╣рд░рд╛рддрд╛ std::copy ред

рддреЛ, рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ, рдПрдХ рд╕рд░рд▓ рдирд┐рдпрдо:
  1. рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо <рдкрд╣рд▓реЗ ("рдмреНрд▓реЙрдХ рдХреЛ рд╢реБрд░реБрдЖрдд рдпрд╛ рдмрд╛рдПрдВ /" рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ), рддреЛ std::copy рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рдЧрдВрддрд╡реНрдп рдмреНрд▓реЙрдХ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред
  2. рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо> рдкрд╣рд▓реЗ ("рдмреНрд▓реЙрдХ рдХреЛ рдЕрдВрдд / рдпрд╛ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ"), рддреЛ std::copy_backward рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдВрддрд╡реНрдп рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрдд рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред


рдкрд╛рда рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХреЗ рд▓реЗрдЦ рдХрд╛ рдПрдХ рд░рдЪрдирд╛рддреНрдордХ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рд╣реИ: www.tril рд▓рд┐рдерд┐рдпрдо.com / johan / 2006 / 02 / copy - confusion , рдЪрд┐рддреНрд░ рдЙрд╕реА рдЬрдЧрд╣ рд╕реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВ, рдореЗрд░реЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рд╕рдВрджрд░реНрдн:
  1. www.cplusplus.com/reference/algorithm/copy
  2. www.cplusplus.com/reference/algorithm/copy_backward

Source: https://habr.com/ru/post/In218451/


All Articles